数据更改时更新JTable

时间:2015-07-22 22:22:16

标签: java swing jtable tablemodel

这个问题可能已经回答了,我读了许多类似的问题但对我不起作用。所以我的JTable我的自定义表模型扩展了DefaultTableModel。我的数据是Object[][] data和列名String[] columnNames。因此,当我的数据更改时,如何更新表格?我一直在使用tableModel.setDataVector(data, columnNames)它正在工作,但它将我的自定义单元格渲染器重置为默认值。感谢。

1 个答案:

答案 0 :(得分:2)

不要更改数组! DefaultTableModel将数据从数组复制到DefaultTableModel使用的内部存储。

相反,您需要使用JTable的setValueAt(...)方法或TableModel直接更改TableModel。然后TableModel将通知表已经进行了更改。

  

我一直在使用tableModel.setDataVector(data, columnNames)它正在运行,但它会将我的自定义单元格渲染器重置为默认值

如果由于某种原因需要重新创建整个TableModel,那么可以使用:

table.setAutoCreateColumnsFromModel( false );

第一次使用TableModel创建表格后。现在,下次使用setDataVector(...)方法时,不会重新创建表的TableColumnModel,这意味着您不会丢失自定义渲染器。