我想在用户按下按钮后刷新并显示我的JTable
。在此之前,该按钮生成Object[][]
,其中保存来自表的过滤数据。
过滤后的数据仅在行数上有所不同。
我正在使用netbeans UI创建器,我可以用数据填充表的唯一方法是定义abstractTableModel。 这是我的abstractTableModel的代码:
class myTable extends AbstractTableModel{
private String[] stolpci = {"Kategorija","Podkategorija","Opis","Cena","Datum","Boni"};
private Object[][] data = PregledovalnikGUI.vrniTabelo(); /*PregledovalnikGUI.vrniTabelo() returns a value in form of Object[][] in which the data is held*/
public int getColumnCount() {
return stolpci.length;
}
public int getRowCount() {
return vrstice.length;
}
public String getColumnName(int col) {
return stolpci[col];
}
public Object getValueAt(int row, int col) {
return vrstice[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public void setValueAt(Object value, int row, int col) {
vrstice[row][col] = value;
fireTableCellUpdated(row, col);
}
jTable的设置如下:
Tabela.setModel(new myTable());
我需要定义哪些方法才能在运行时刷新表?
答案 0 :(得分:3)
如果你创建一个新的TableModel
,那么表格将自动更新。
如果更改了模型的基础数据,那么从模型内部(看作是从AbstractTableModl
扩展),您可以调用fireTableDataChanged
,这可以让表知道该内容表已经改变,它应该重绘。
这可能要求模型具有自己的刷新方法,或者它能够从建模的数据中侦听更改
答案 1 :(得分:3)
在myTable
内你可以有一个名为refresh()
的方法,就像这样
public void refresh(Object[][] objects){
//make the changes to the table, then call fireTableChanged
fireTableChanged(null);
}
然后在按钮监听器中,调用上面的方法:
Tablea.refresh(objects);//objects stores your filtered data