这个问题可能已经回答了,我读了许多类似的问题但对我不起作用。所以我的JTable
我的自定义表模型扩展了DefaultTableModel
。我的数据是Object[][] data
和列名String[] columnNames
。因此,当我的数据更改时,如何更新表格?我一直在使用tableModel.setDataVector(data, columnNames)
它正在工作,但它将我的自定义单元格渲染器重置为默认值。感谢。
答案 0 :(得分:2)
不要更改数组! DefaultTableModel将数据从数组复制到DefaultTableModel使用的内部存储。
相反,您需要使用JTable的setValueAt(...)
方法或TableModel直接更改TableModel。然后TableModel将通知表已经进行了更改。
我一直在使用
tableModel.setDataVector(data, columnNames)
它正在运行,但它会将我的自定义单元格渲染器重置为默认值
如果由于某种原因需要重新创建整个TableModel,那么可以使用:
table.setAutoCreateColumnsFromModel( false );
第一次使用TableModel创建表格后。现在,下次使用setDataVector(...)
方法时,不会重新创建表的TableColumnModel
,这意味着您不会丢失自定义渲染器。