1

我想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());

我需要定义哪些方法来让表在运行时刷新?

4

2 回答 2

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
于 2013-11-13T12:25:05.663 回答
3

如果你创建一个新的TableModel,那么什么都没有,表会自动更新自己。

如果模型的基础数据发生了变化,那么从模型内部(从 扩展而来AbstractTableModl),您可以调用fireTableDataChanged,这让表格知道表格的内容已经改变并且它应该重绘自己。

这可能需要模型有自己的刷新方法,或者它有能力监听正在建模的数据的变化

于 2013-11-13T11:47:43.860 回答