Witam
Jak zrobić aby wyczyściło mi wszystkie rekordy w JTable?
Pozdrawiam
Zależy od tego jak wygląda metoda getValueAt().
Jeśli wygląda tak:
public Object getValueAt(int wiersz,int kolumna)
{
JakisTyp w=dane.get(wiersz); // dane są polem w modelu, jakąś kolekcją
switch(kolumna)
{
case 0:
return w.coś;
case 1:
return w.coś_innego:
......
}
}
to wystarczy coś takiego
model.dane.clear(); //jeśli dane są typu Vector
model.fireTableDataChanged():
Jeśli metoda getValueAt() wygląda tak:
public Object getValueAt(int wiersz,int kolumna)
{
return new Integer(wiersz*kolumna);
}
to musisz podmienić model na "pusty"
tabela.setModel(nowyModel);
nowyModel.fireTableDataChanged():
nie prościej:
int ileRows = aModel.getRowCount();
if(ileRows >0){
for(int i=ileRows-1;i>=0;i--) aModel.removeRow(i);
}
przy założeniu że do tabeli jest dodany model:
`DefaultTableModel aModel = null;`
Wystarczy:
model.setRowCount(0);
__Krzysiek85 napisał
Wystarczy: model.setRowCount(0);
Metoda setRowCount() jest dostępna tylko dla DefaultTableModel (dane są w postaci obiektu typu Vector). Podany sposób ma zatem bardzo małe zastosowanie.
opałek napisał
nie prościej:int ileRows = aModel.getRowCount();
if(ileRows >0){
for(int i=ileRows-1;i>=0;i--) aModel.removeRow(i);
}
Ta sama uwaga co wyżej: metoda setRowCount() jest dostępna tylko w DefaultTableModel.
W ogólniejszej klasie AbstractTableModel tych metod nie ma</u>.
Uniwersalna metoda jest taka:
import javax.swing.table.AbstractTableModel;
public class PustyModel extends AbstractTableModel
{
private int ileKolumn;
//------------------------
public PustyModel(int ile)
{
ileKolumn=ile;
}
//------------------------
public int getRowCount(){return 0;}
public int getColumnCount(){return ileKolumn;}
public Object getValueAt(int wiersz,int kolumna){return null;}
}
oraz
model=new PustyModel(tabela.getColumnCount());
tabela.setModel(model);
model.fireTableDataChanged();
pozdrawiam