【发布时间】:2008-11-17 14:13:47
【问题描述】:
我们有一个简单的项目,我们从套接字读取数据,我们想用即将到来的数据填充一个表,但是我们找不到向尚未创建的 JTable 对象添加行的方法,我们只能了解如何在创建表时添加行。
是否可以将行动态添加到JTable,或者有更好的替代对象来处理这种显示数据的方式?
编辑:非常感谢您的回答。
他们三个看起来都很有前途,但我只能选择一个,我认为最好的是纪尧姆的。
【问题讨论】:
我们有一个简单的项目,我们从套接字读取数据,我们想用即将到来的数据填充一个表,但是我们找不到向尚未创建的 JTable 对象添加行的方法,我们只能了解如何在创建表时添加行。
是否可以将行动态添加到JTable,或者有更好的替代对象来处理这种显示数据的方式?
编辑:非常感谢您的回答。
他们三个看起来都很有前途,但我只能选择一个,我认为最好的是纪尧姆的。
【问题讨论】:
您应该创建一个自定义TableModel。 JTable 实际上并不存储行,它总是将其委托给 TableModel。为了帮助您实现它,您应该使用AbstractTableModel。每次添加行时不要忘记致电fireTableRowsInserted()。如果添加很多行,为了获得更好的性能,请尝试批量更新并一次添加很多行。
【讨论】:
如果您使用 JTable 的默认表模型,那么您可以使用以下代码添加行
if ( dest+1 < table.getRowCount()-1 )
( (DefaultTableModel) table.getModel() ).insertRow(dest+1, getValuesForNewRow());
else
( (DefaultTableModel) table.getModel() ).addRow(getValuesForNewRow());
【讨论】:
一旦您开始在 JTable 中动态添加和删除元素,您确实需要开始使用 TableModel。
有关详细信息,请参阅Java Tutorial。
【讨论】: