重新创建 Jtable 或删除所有行并添加新行?
Recreate Jtable or remove all rows and add new rows?
我有一个 JTable 和一个 DefaultTableModel,我想每 3 秒删除 JTable 的所有行并向 JTable 添加新行。考虑到性能,最好的选择是重新创建 Jtable 还是删除所有行并添加行?
What's the best choice to do that, renew Jtable or remove all rows and addrows?
如果重新创建 JTable,将为 table 重新创建所有呈现器和编辑器。
如果更改 TableModel,则 table 将需要重新创建 TableColumnModel,以及基于新 TableModel 的所有 TableColumns。
需要创建更多对象来支持 JTable/TableModel 关系。
删除行和添加行只会导致 table 使用所有当前渲染器重新绘制新数据。我会说这更有效率。而不是一次添加一行,您应该一次添加所有行
您可以创建一个表模型来挖掘您的数据对象。一旦更改了底层数据对象,就调用 fireTableDataChanged()。
来自 AbstractTableModel#fireTableDataChanged() 的 JavaDoc:
Notifies all listeners that all cell values in the table's rows may have changed. The number of rows may also have changed and the JTable should redraw the table from scratch. The structure of the table (as in the order of the columns) is assumed to be the same.
我有一个 JTable 和一个 DefaultTableModel,我想每 3 秒删除 JTable 的所有行并向 JTable 添加新行。考虑到性能,最好的选择是重新创建 Jtable 还是删除所有行并添加行?
What's the best choice to do that, renew Jtable or remove all rows and addrows?
如果重新创建 JTable,将为 table 重新创建所有呈现器和编辑器。
如果更改 TableModel,则 table 将需要重新创建 TableColumnModel,以及基于新 TableModel 的所有 TableColumns。
需要创建更多对象来支持 JTable/TableModel 关系。
删除行和添加行只会导致 table 使用所有当前渲染器重新绘制新数据。我会说这更有效率。而不是一次添加一行,您应该一次添加所有行
您可以创建一个表模型来挖掘您的数据对象。一旦更改了底层数据对象,就调用 fireTableDataChanged()。
来自 AbstractTableModel#fireTableDataChanged() 的 JavaDoc:
Notifies all listeners that all cell values in the table's rows may have changed. The number of rows may also have changed and the JTable should redraw the table from scratch. The structure of the table (as in the order of the columns) is assumed to be the same.