如何清除jTable的内容?

时间:2010-10-07 07:42:35

标签: java swing jtable

我有一个jTable,它有一个像这样定义的表模型:

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

有谁知道如何清除其内容?就这样它返回一个空表?

8 个答案:

答案 0 :(得分:31)

最简单的方法:

//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);
}

即。你的重置方法告诉模型有0行数据模型会将相应的数据更改事件激发到将重建自身的表。

答案 1 :(得分:10)

如果您要删除内容但其单元格保持不变,则:

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);
      }
   }
}

好的,如果你想删除所有单元格但保留其标题:

public static void deleteAllRows(final DefaultTableModel model) {
    for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
        model.removeRow(i);
    }
}

答案 2 :(得分:4)

    //To clear the Contents of Java JTable

    DefaultTableModel dm = (DefaultTableModel) JTable1.getModel();

    for (int i = 0; i < dm.getRowCount(); i++) {
        for (int j = 0; j < dm.getColumnCount(); j++) {
            dm.setValueAt("", i, j);
        }
    }

答案 3 :(得分:2)

您有几个选择:

  1. 创建new DefaultTableModel(),但请记住重新附加任何侦听器。
  2. 迭代model.removeRow(index)以删除。
  3. 定义包含List / Set的自己的模型并公开clear方法。

答案 4 :(得分:0)

我认为你的意思是你要清除jTable中的所有单元格并使其像新的空白jTable一样。 例如,如果您的表包含40个原始数据,则可以执行以下操作。

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

答案 5 :(得分:0)

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

dataModel.setRowCount(0);

dataModel是您希望清除

上内容的模型

然而,这不是唯一的解决办法。

答案 6 :(得分:-1)

另一个简单的答案:

defaultTableModel.getDataVector().removeAllElements();

答案 7 :(得分:-1)

public void deleteAllRows() {
    DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
    model.setRowCount(0);
}