如何清除jTable的内容?

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

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

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

最简单的方法:

 //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行数据模型会将相应的数据更改事件激发到将重建自身的表。

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

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

你有几个选择:

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

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

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

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

 dataModel.setRowCount(0); 

dataModel是您要清除内容的模型

但是,它不是唯一的解决方案。

另一个简单答案:

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