PDA

View Full Version : [JAVA]Cancellare righe di una JTable


dome1987
15-07-2010, 11:48
Salve ho un problemino.
Ho una tabella e alla pressione di un bottone vorrei che nella tabella vengano cancellate tutte le righe.
Ho scritto questo codice:

private void svuotaTabella(){
DefaultTableModel model=(DefaultTableModel) tblStanze.getModel();
System.out.println(tblStanze.getRowCount());
for(int h=0;h<tblStanze.getRowCount();h++)
model.removeRow(h);
}
Funziona,ma la cosa curiosa è che le righe di numero pari non le cancella,le altre si.
Grazie in anticipo per l'aiuto.

british
15-07-2010, 13:21
Il problema risiede nel fatto che cancellare una riga (azione che puoi vedere come l'eliminazione di un elemento da una lista ordinata) implica come effetto collaterale che la lunghezza della lista diminuisca di un'unità e che ci sia uno scivolamento verso la testa (quindi verso la riga di indice zero) di tutti gli elementi a valle dell'elemento rimosso.
In effetti a ogni iterazione il tuo contatore aumenta di uno (va verso gli indici "in coda") mentre i tuoi elementi scivolano di uno verso la testa: ciò produce come risultato che venga effettivamente rimosso un elemento si e uno no.
se provi a simulare 3-4 passi su carta è immediato da capire.

la soluzione è iterare al contrario (dall'elemento di indice massimo verso quello di indice zero)

ciao!

british

PGI-Bis
15-07-2010, 13:41
Fai prima con:

model.setRowCount(0);.

dome1987
15-07-2010, 14:08
Grazie mille delle risposte...si ho capito adesso il motivo...grazie del chiarimento...ma per brevità ho usato al soluzione di PGI-Bis...
grazie ancora...=)...