删除 JTable 中的所有行

新手上路,请多包涵

我需要删除 JTable 中的所有行。

我尝试了以下两种方法:

 /**
 * Removes all the rows in the table
 */
public void clearTable()
{
    DefaultTableModel dm = (DefaultTableModel) getModel();
    dm.getDataVector().removeAllElements();
    revalidate();
}

((DefaultTableModel)table.getModel()).setNumRows(0);

两者都不会删除所有行。有任何想法吗?

原文由 user489041 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

以下代码对我有用:

 DefaultTableModel dm = (DefaultTableModel) getModel();
int rowCount = dm.getRowCount();
//Remove rows one by one from the end of the table
for (int i = rowCount - 1; i >= 0; i--) {
    dm.removeRow(i);
}

原文由 Mihai 发布,翻译遵循 CC BY-SA 3.0 许可协议

为此,我们可以使用 DefaultTableModel.setRowCount(int),参考 Java 的文档:

public void setRowCount(int rowCount)

设置模型中的行数。如果新大小大于当前大小,则将新行添加到模型的末尾如果新大小小于当前大小, 则丢弃索引 rowCount 和更大的所有行

这意味着,我们可以像这样清除一个表:

 DefaultTableModel dtm = (DefaultTableModel) jtMyTable.getModel();
dtm.setRowCount(0);

现在,关于“java 如何丢弃这些行?”,我相信它最终会在某个时候调用一些类似 C 的 free(void*),或者它可能只是删除对该内存区域的所有引用并将其留给 GC 来关心,关于这个函数在内部是如何工作的,文档还不是很清楚。

原文由 Felype 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题