向JTable添加行

14

我们有一个简单的项目,需要从socket读取数据并将其填充到一个表格中,但我们找不到一种方法来向已创建的JTable对象添加行,我们只能在创建表格时添加行。

是否可以动态地向JTable添加行,或者有更好的对象来处理这种方式显示数据呢?

编辑:非常感谢你们的回答。

它们都看起来非常有前途,但我必须选择一个,我认为最好的是Guillaume的。

3个回答

12

您需要创建一个自定义的 TableModel。一个 JTable 实际上并不存储行数据,它总是委托给一个 TableModel。为了帮助您实现它,您应该利用 AbstractTableModel。别忘了每次添加行时调用fireTableRowsInserted()。如果您要添加很多行数据,为了获得更好的性能,请尝试批量更新并一次性添加多行。


11
如果您使用JTable的默认表格模型,则可以使用以下代码添加行。
 if ( dest+1 < table.getRowCount()-1 )
    ( (DefaultTableModel) table.getModel() ).insertRow(dest+1, getValuesForNewRow());
  else
    ( (DefaultTableModel) table.getModel() ).addRow(getValuesForNewRow());

7
最好在将 DefaultTableModel 传递给 JTable 构造函数之前将其保留。这样,您就不需要触碰 JTable 或进行任何类型转换。 - Tom Hawtin - tackline

6

一旦您开始动态添加和删除JTable中的元素,您就需要开始使用TableModel。

有关更多详细信息,请参阅Java教程


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接