PDA

Visualizza la versione completa : [JAVA] Aggiornare JTable


nik600
23-10-2005, 16:02
ciao

susatemi, ho fatto qualche ricerca ma non sono riuscito a risolvere:

ho una semplicissima jtable che inizializzo cosi:




String [] headers_tabella ={"Data","Mittente","Oggetto"};
Object [][]contenuto_tabella=new Object[0][0];
JTable tabella=new JTable(contenuto_tabella,headers_tabella);


e fino a qui tutto ok

ad un certo punto la mia applicazione chiama un metodo che ritorna un Object[][] che sarebbe l'array bidimensionale contenente tutto quello che deve finire nella tabella

come posso fare quindi per riaggiorare la tabella?

ho provato un



this.tabella=new JTable(this.medodo(),this.headers_tabella);


ma credo che sia sbagliato, e comunque non funziona...cosa devo fare? grazie

eumene
24-10-2005, 12:54
Hai validato il container che contiene la tua JTable dopo averla aggiornata?

Prova e vedi se cambia qualcosa.

nik600
24-10-2005, 13:18
uhm....no...come si fa?

eumene
24-10-2005, 15:36
La tua JTable dovrebbe essere stata aggiunta ad un JFrame o container simili, con l'istruzione


jFrame.add(jTable);

a questo punto dopo aver modificato la tua JTable prova ed esegure queste operazioni sul JFrame:


jFrame.validate();

eventualmente fallo prima sulla JTable, ma non dovrebbe essere necessario



jTable.validate();
jFrame.validate();

nik600
24-10-2005, 15:42
non va... :bh:

ho provato anche a farlo sul borderlayout e sullo scrollpane che la contengono ma senza ottenere risultati...

nik600
25-10-2005, 10:08
cercando un po in rete ho visto che ci sono anche degli esempi sull'utilizzo di un modello...

ho provato quindi questo:



TableModel tm=this.tabella.getModel();
this.tabella=new JTable(new Object[10][10],this.headers_tabella);

for(int i=0;i<this.account.SavedEmails();i++){

tm.setValueAt("a",i,0);
tm.setValueAt("b",i,1);
tm.setValueAt("c",i,2);

}

this.tabella.setModel(tm);
this.tabella.revalidate();
this.tabella.repaint();

}


this.account.SavedEmails() ritorna 3

eppure mi da exception java.lang.ArrayIndexOutOfBoundsException: 0

in corrispondenza di: tm.setValueAt("a",i,0);

inizialmente la jtable inizializzata cosi:
JTable tabella;
String [] headers_tabella ={"Data","Mittente","Oggetto"};
Object [][]contenuto_tabella=new Object[0][0];

this.tabella=new JTable(this.contenuto_tabella,this.headers_tabella );

per come si vede poi viene fatto un:
this.tabella=new JTable(new Object[10][10],this.headers_tabella);

perch non va?

nik600
25-10-2005, 13:05
ho risolto cosi!



DefaultTableModel modello_tabella=new DefaultTableModel();
JTable tabella=new JTable(this.modello_tabella);

this.modello_tabella.addColumn("Data");
this.modello_tabella.addColumn("Mittente");
this.modello_tabella.addColumn("Soggetto");

for(...){
this.modello_tabella.addRow(new Object [] {1,2,3});
}

Loading