killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
ciao a tutti... come faccio a visualizzare i dati contenuti nel vettore in una JTable?
tenete presente che i dati(gli attributi) vengono memorizzati nel vettore attraverso l'oggetto istanziato della classe base....Ex..ho una classe
public class Animale{}
i cui attributi sono
int numZampe; String genere;
questi attributi li rikiamo dalla classe base istanziando un oggetto e memorizzandoli in un vettore:
Animale a = new Animale();
a.numZampe=this.JTextField1.getText();
a.genere=this.JTextField2.getText();
vettore.addElementAt(a);
bene adesso pero..
non so come settare il model e visualizzare i dati in un ciclo
for(conta=0;conta < vettore.size();conta++){} nella JTable...come faccio ? postate il source grazie
Ultima modifica effettuata da killer il 05/08/2009 alle 15:25 |
|
killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
Ekko il source so riuscito a farlo....tutto funziona comunque...la visualizzazione dei dati risulta efficente pero generando degli errori,delle eccezioni le quali non sono riuscito a capire.....
Vi poso il Source cosi se ce qualche errore visibile, mi aiutate forse ho sbagliato in qualche inizializzazione che non riesco ad identificare o qualcosa di piu grave...aiutatemi a risolverlo...
Gli errori(le eccezioni) che risultano sono i(le) seguenti:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:609)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Adesso vi posto il Source cosi magari mi aiutate perche sto impazzendo...non trovo l'errore...grazie...
Codice sorgente - presumibilmente Java |
package test; import java.awt.Cursor; import java.awt.print.PrinterException; import java.io.FileInputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.table.DefaultTableModel; public class Elenco extends javax. swing. JFrame { public Contatti c = new Contatti(); private void leggi() { try { this. vect = (Vector) ff_contatti. readObject(); ff.close(); } } public void chiamaTab() { model.addColumn("Pos"); model.addColumn("Nome"); model.addColumn("Cognome"); model.addColumn("Città"); model.addColumn("Prov"); model.addColumn("Indirizzo"); model.addColumn("N°"); model.addColumn("Tel"); model.addColumn("Cell"); model.addColumn("E-Mail"); model.addColumn("Nazionalità"); model.addColumn("Sesso"); model.addColumn("Interessi"); this.jTableTabella.setModel(model); int x = 0; for (x = 0; x < this.vect.size(); x++) { c = (Contatti) this.vect.get(x); model. addRow(new Object[]{c. posizione, c. nome, c. cognome, c. citta, c. prov, c. ind, c. num, c. tel, c. cell, c. eMail, c. nazionalita, c. sesso, c. interessi}); } } public void setImg(boolean show) { if (show == true) { this. jLabelPos. setIcon(new javax. swing. ImageIcon(getClass (). getResource("/27.gif"))); } else { this. jLabelPos. setIcon(new javax. swing. ImageIcon(getClass (). getResource(""))); } } /** Creates new form Visualizza */ public Elenco() { initComponents(); this.leggi(); } private void jMenuItemExitActionPerformed (java. awt. event. ActionEvent evt ) { this.dispose(); } private void jMenuItem1ActionPerformed (java. awt. event. ActionEvent evt ) { Rubrica r = new Rubrica(); r.setVisible(true); this.dispose(); } private void jButtonHomePageActionPerformed (java. awt. event. ActionEvent evt ) { Rubrica r = new Rubrica(); r.setVisible(true); this.dispose(); } private void jButtonStampaActionPerformed (java. awt. event. ActionEvent evt ) { try { this.jTableTabella.print(); Logger.getLogger(Elenco.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonStampaMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void buttonVisualizzaMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void buttonVisualizzaActionPerformed (java. awt. event. ActionEvent evt ) { t.start(); } private void jButtonHomePageMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void formMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. DEFAULT_CURSOR); } private void jMenuFileMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void jMenuItemExitMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void jMenuProprietàMouseMoved (java. awt. event. MouseEvent evt ) { this. setCursor(Cursor. HAND_CURSOR); } private void jMenuItem1MouseMoved (java. awt. event. MouseEvent evt ) { // TODO add your handling code here: } public static void main (String args []) { public void run() { new Elenco().setVisible(true); } }); } } package test; int time; Elenco ele=new Elenco(); public CaricamentoElenco(int time, Elenco ele) { this.time = time; this.ele = ele; } @Override public void run() { try { this.ele.setImg(true); this.ele.setImg(false); //Kiama la visualizzazione dei dati nella tabella this.ele.chiamaTab(); //Eccezioni sollevate... /* */ } } }
|
edit by netarrow: aggiunto il tag code
Ultima modifica effettuata da netarrow il 05/08/2009 alle 22:30 |
|
HEAD (Normal User)
Rookie
Messaggi: 25
Iscritto: 04/08/2009
|
Postato originariamente da killer:
Ekko il source so riuscito a farlo....tutto funziona comunque...la visualizzazione dei dati risulta efficente pero generando degli errori,delle eccezioni le quali non sono riuscito a capire.....
Vi poso il Source cosi se ce qualche errore visibile, mi aiutate forse ho sbagliato in qualche inizializzazione che non riesco ad identificare o qualcosa di piu grave...aiutatemi a risolverlo...
Gli errori(le eccezioni) che risultano sono i(le) seguenti:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)
at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
at javax.swing.plaf.basic.BasicTableHeaderUI.paint(BasicTableHeaderUI.java:609)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Adesso vi posto il Source cosi magari mi aiutate perche sto impazzendo...non trovo l'errore...grazie...
[...]
|
ciao ho dato un'occhiata veloce al tuo codice .. ecco come settare un JTable
non devi fare altro che copiare questo codice ed incollarlo nella tua classe
come metodo metti questo ..funziona
Codice sorgente - presumibilmente Java |
//questo ti setta il Jtable public void chiamaTab() { Vector<String> header = new Vector<String>(); header.add("Pos"); header.add("Nome"); header.add("Cognome"); header.add("Città"); header.add("Prov"); header.add("Indirizzo"); header.add("N°"); header.add("Tel"); header.add("Cell"); header.add("E-Mail"); header.add("Nazionalità"); header.add("Sesso"); header.add("Interessi"); int x = 0; for (x = 0; x < this.vect.size(); x++) { Vector<Object> row = new Vector<Object>(); c = (Contatti) this.vect.get(x); row.add(c.posizione); row.add(c.nome); row.add( c.cognome); row.add( c.citta); row.add( c.prov); row.add( c.ind); row.add( c.num); row.add( c.tel); row.add( c.cell); row.add( c.eMail); row.add( c.nazionalita) row.add( c.sesso); row.add( c.interessi);; model.add(row); } }
|
ciao
edit by netarrow: aggiunto tag code Ultima modifica effettuata da netarrow il 05/08/2009 alle 22:32 |
|
killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
Ciao ho provato....non funziona lo stesso....ossia.... l'elenco fuorisce comunque anche con il mio metodo....ma l'eccezione risulta sempre uguale
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 2
at java.util.Vector.elementAt(Vector.java:427)
dovrebbe essere qualcosa che abbia a che fare con il vettore...qualche poblema...non so...vi prego cercate tutti insieme di risolvermelo...grazie...
|
|
HEAD (Normal User)
Rookie
Messaggi: 25
Iscritto: 04/08/2009
|
scusa hai detto che la tabella si visualizza con i dati , allora su quale evento genera l'errore..
|
|
killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
proprio nel momento in cui cliccko sul pulsante refresh .....( pero ci sto pensando....non e che quell'errore me lo da perche ho utilizzato un JButton della libreria AWT di java e non Swing come ho sempre fatto ?) e un ipotesi....!!! non saprei se potrebbe centrare qualcosa....
in poke parole io clikko sul pulsante....i dati li visualizza tutti correttamente pero escono fuori sempre le eccezzioni con : Exception ArreyOutIndexOfBounds etc..........
e na cosa stranissima.....
se vuoi ti posto direttamente tutto il mio programma cosi lo provi con netbeans e mi dici ok ?
fammi sapere presto...
ps: niente da fare ho provato anche a sostituire in jButton della libreria AWT con quella swing...niente di niente gli stessi errori ...cazzo..non vorrei che abbia fatto male qualche inizializzazione di vettore nelle principali classi....dai posto direttamente il programma completo senza perder tempo..cosi mi sistemate sto errore maledetto..
ps1: quando fate funzionare il programma, eseguite la memorizzazione del contatto e dopo attraverso il JMenuBar, cliccate su elenco....si aprira la finestra per visualizzazre i contatti....comunque e inutile provare le altre funzioni perche non ho sviluppato il source...devo ancora finirlo...
Ultima modifica effettuata da killer il 06/08/2009 alle 10:38 |
|
HEAD (Normal User)
Rookie
Messaggi: 25
Iscritto: 04/08/2009
|
Ciao ho dato un'occhiata al tuo progetto, ehi! Ti piacciono le immagini vero? Eh,eh.. era proprio una di quella che mandava in tilt tutto , problema quasi risolto ,
dico quasi perchè dopo un po che andava benissimo, ha incominciato a dare altre eccezzioni, il ciclo for per l'elaborazione del jTable deve i incominciare da 1 e non da 0 altrimenti non legge l'elemento del tuo vector e va in eccezione superando l'array..
adesso va che e una meraviglia.. non da più errori,
devo scappare e tardi..
. ti rinvio il progetto modificato che non da più eccezioni,, a stasera se ci sei.. ciao..
PS.. poi ti spiegherò più dettagliatamente cosa ho fatto.
|
|
killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
gia a me piacerebbe sviluppare un enorme software in 'possesso' di una grafica spettacolare colma di immagini statiche e animazioni....il tutto gestito con i Thread...
in ogni caso...fammi sapere..ci sono sta sera...magari mi dai in privato non so se si puo in contact di msn.. cosi magari in msn riusciamo insieme a risolvere errori nei vari progetti...
grazie ancora......
a sta sera
Ultima modifica effettuata da killer il 06/08/2009 alle 15:24 |
|
killer (Normal User)
Expert
Messaggi: 217
Iscritto: 19/07/2009
|
Aiuto ....i problemi della jTable nn riesco ancora a risolverli...
la visualizzazione dei dati funziona perfettamente ma risultano sempre le eccezioni..
Aprite il mio programma che vi allego ...e ditemi perche durante la visualizzazione dell'elenco risultano eccezioni..grazie ancora a tutti quanti per il notevole aiuto che mi state dando...
Ultima modifica effettuata da killer il 07/08/2009 alle 9:38 |
|