Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何清除JTable_Java_Swing - Fatal编程技术网

Java 如何清除JTable

Java 如何清除JTable,java,swing,Java,Swing,如何使用Java清除JTable的内容?基本上,这取决于您用于JTable的TableModel。如果您使用的是DefaultTableModel,则可以通过两种方式执行: DefaultTableModel dm = (DefaultTableModel)table.getModel(); dm.getDataVector().removeAllElements(); dm.fireTableDataChanged(); // notifies the JTable that the mode

如何使用Java清除JTable的内容?

基本上,这取决于您用于JTable的TableModel。如果您使用的是
DefaultTableModel
,则可以通过两种方式执行:

DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();
dm.fireTableDataChanged(); // notifies the JTable that the model has changed


有关更多详细信息,请参阅的JavaDoc

您必须从用于该表的
表格模型
中删除数据

如果使用
DefaultTableModel
,只需将行数设置为零。这将删除行并触发
TableModelEvent
,以更新GUI

JTable table; … DefaultTableModel model = (DefaultTableModel) table.getModel(); model.setRowCount(0); JTable表; … DefaultTableModel=(DefaultTableModel)table.getModel(); model.setRowCount(0);
如果您使用的是其他
TableModel
,请查看文档。

我必须得到一张没有列的干净表格。我做了以下工作:

jMyTable.setModel(new DefaultTableModel());

这是我找到的最快最简单的方法

while (tableModel.getRowCount()>0)
          {
             tableModel.removeRow(0);
          }

这将清除表lickety split,并使其为新数据做好准备

我认为您的意思是要清除jTable中的所有单元格,使其与新的空白jTable一样。 例如,如果您的表是myTable,则可以执行以下操作

DefaultTableModel model = new DefaultTableModel();
myTable.setModel(model);

如果我们使用
tMOdel.setRowCount(0)我们可以得到空表

DefaultTableModel tMOdel = (DefaultTableModel) jtableName.getModel();
tMOdel.setRowCount(0);

尝试以下操作:

如果您更改了基础数据向量,请记住触发一个表事件-否则JTable将不知道它已经更改了…-1,这两个建议都是错误的。第一,出于上述原因。第二个将跳过行,因为在删除每一行时,变量i不断递增。如果要创建循环,则只需不断删除行0,直到不再有行为止。然而,卡洛斯发布了最简单的解决方案。卡米克尔,你是对的。为了解决这些问题,我更改了答案。但是Carlos的解决方案更容易实现。检查这个问题:Dupe of:只是在这里添加这个。。。我不得不调用
table.revalidate()
在将行数设置为零后,为了立即看到更改,否则我直到单击
JTable
@Jim Dingo才能看到更改,而无需
revalidate()
对我来说:
DefaultTableModel
在数据更改时通知视图-检查
setNumRows(int)
的代码,如果行数减少,它将调用
fireTableRowsDeleted
。快速有效的解决方案,但它也会删除标题。如果有一个不删除标题的选项,应该会更好。另一个帖子中有人建议将所有行逐个删除。这将使标题保留更多信息。不鼓励只编写代码和“试试这个”答案,因为它们不包含可搜索的内容,也不解释为什么有人应该“试试这个”。我们努力成为知识的源泉。
DefaultTableModel tMOdel = (DefaultTableModel) jtableName.getModel();
tMOdel.setRowCount(0);
((DefaultTableModel)jTable3.getModel()).setNumRows(0); // delet all table row