数据更改时更新 JTable
Update JTable when Data changes
这个问题可能已经得到解答,我读了很多类似的,但对我不起作用。所以我的 JTable
带有扩展 DefaultTableModel
的自定义 Table 模型。我的数据是 Object[][] data
和列名 String[] columnNames
。那么当我的数据发生变化时,我该如何更新 table?我一直在使用 tableModel.setDataVector(data, columnNames)
并且它正在工作,但它将我的自定义单元格渲染器重置为默认值。谢谢。
不要更改数组! DefaultTableModel 会将数组中的数据复制到 DefaultTableModel 使用的内部存储中。
相反,您需要使用 JTable 或 TableModel 的 setValueAt(...)
方法直接更改 TableModel。然后 TableModel 将通知 table 已进行更改。
I have been using tableModel.setDataVector(data, columnNames)
and it is working but it resets my custom cell renderer to default
如果出于某种原因需要重新创建整个 TableModel,则可以使用:
table.setAutoCreateColumnsFromModel( false );
在您第一次使用 TableModel 创建 table 之后。现在,下次您使用 setDataVector(...)
方法时,将不会重新创建 table 的 TableColumnModel
,这意味着您不会丢失自定义渲染器。
这个问题可能已经得到解答,我读了很多类似的,但对我不起作用。所以我的 JTable
带有扩展 DefaultTableModel
的自定义 Table 模型。我的数据是 Object[][] data
和列名 String[] columnNames
。那么当我的数据发生变化时,我该如何更新 table?我一直在使用 tableModel.setDataVector(data, columnNames)
并且它正在工作,但它将我的自定义单元格渲染器重置为默认值。谢谢。
不要更改数组! DefaultTableModel 会将数组中的数据复制到 DefaultTableModel 使用的内部存储中。
相反,您需要使用 JTable 或 TableModel 的 setValueAt(...)
方法直接更改 TableModel。然后 TableModel 将通知 table 已进行更改。
I have been using
tableModel.setDataVector(data, columnNames)
and it is working but it resets my custom cell renderer to default
如果出于某种原因需要重新创建整个 TableModel,则可以使用:
table.setAutoCreateColumnsFromModel( false );
在您第一次使用 TableModel 创建 table 之后。现在,下次您使用 setDataVector(...)
方法时,将不会重新创建 table 的 TableColumnModel
,这意味着您不会丢失自定义渲染器。