Java 如何清除jTable的内容?

Java 如何清除jTable的内容?,java,swing,jtable,Java,Swing,Jtable,我有一个jTable,它有一个表模型,定义如下: javax.swing.table.TableModel dataModel = new javax.swing.table.DefaultTableModel(data, columns); tblCompounds.setModel(dataModel); 有人知道我如何清除它的内容吗?就为了让它回到一张空桌子 如果要删除内容,但其单元格保持完整,则: public static void clearTable(final JT

我有一个jTable,它有一个表模型,定义如下:

javax.swing.table.TableModel dataModel = 
     new javax.swing.table.DefaultTableModel(data, columns);
tblCompounds.setModel(dataModel);

有人知道我如何清除它的内容吗?就为了让它回到一张空桌子

如果要删除内容,但其单元格保持完整,则:

public static void clearTable(final JTable table) {
   for (int i = 0; i < table.getRowCount(); i++) {
      for(int j = 0; j < table.getColumnCount(); j++) {
          table.setValueAt("", i, j);
      }
   }
}

您有两个选择:

  • 创建一个新的DefaultTableModel(),但请记住重新附加任何侦听器
  • 迭代
    model.removeow(index)
    以删除
  • 定义您自己的模型,该模型包装列表/集合并公开
    clear
    方法
  • 最简单的方法:

    //private TableModel dataModel;
    private DefaultTableModel dataModel;
    
    
    void setModel() {
      Vector data = makeData();
      Vector columns = makeColumns();
      dataModel = new DefaultTableModel(data, columns);
      table.setModel(dataModel);
    }
    
    void reset() {
      dataModel.setRowCount(0);
    }
    
    i、 e.重置方法告诉模型有0行数据。模型将向表触发相应的数据更改事件,表将自行重建。

    另一个简单答案:

    defaultTableModel.getDataVector().removeAllElements();
    
    //清除Java JTable的内容
    DefaultTableModel dm=(DefaultTableModel)JTable1.getModel();
    对于(int i=0;i
    我认为您的意思是要清除jTable中的所有单元格,使其与新的空白jTable一样。 例如,如果您的表包含40个RAW,则可以执行以下操作

    DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
    model.setRowCount(0);
    model.setRowCount(40);
    

    其中一个简单的方法是使用以下选项

    dataModel.setRowCount(0);
    
    dataModel是您希望清除其上内容的模型


    但是,这不是最优的解决方案。

    对不起,我想将表返回到一种状态,在这种状态下,它只获得列标题,但其中没有数据(虚拟)-1用于第二部分:只要您知道模型的类型是DefaultTableModel,正确的调用方法是setRowCount(0)。+1(稍有更改),TableModel接口没有setRowCount()方法。该方法可在DefaultTableModel类中找到。我编辑您的示例代码是为了使用DefaultTableModel,而不是TableModel。-100如果我理解这个问题,这不是正确的答案。在这个问题中,我们的意思是,我们希望清空表中的单元格,并且希望有一个没有单元格的表!按照下面@Gebreigziabher-Abadi的答案作为最正确的答案,但更改
    dm.setValueAt(“,i,j”)带有
    dm.setValueAt(null,i,j)不,这是完全错误的:永远不要更改模型底部的数据,而是使用模型APIDaultTableModel有一个明确的方法-只是名称不同:-)根据OP接受的答案是删除所有行清空单元格内容这一事实判断,似乎他/她不想实现:-)如果这是目标,将内容设置为空字符串不会清空它,并且可能会在您面前爆炸(如果模型需要其他类型):因此最好将内容设置为空。请添加一些注释
    
    DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
    model.setRowCount(0);
    model.setRowCount(40);
    
    public void deleteAllRows() {
        DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
        model.setRowCount(0);
    }
    
    dataModel.setRowCount(0);