如何清除jTable的内容?

发布于 2024-09-26 07:10:00 字数 226 浏览 1 评论 0原文

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

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

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

I have a jTable and it's got a table model defined like this:

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

Does anyone know how I can clear its contents ? Just so it returns to an empty table ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

左岸枫 2024-10-03 07:10:00

最简单的方法:

//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 行数据模型将向表触发适当的数据更改事件,该表将自行重建。

Easiest way:

//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. your reset method tell the model to have 0 rows of data The model will fire the appropriate data change events to the table which will rebuild itself.

忆伤 2024-10-03 07:10:00

如果您打算删除内容但其单元格保持不变,那么:

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

If you mean to remove the content but its cells remain intact, then:

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

OK, if you mean to remove all the cells but maintain its headers:

public static void deleteAllRows(final DefaultTableModel model) {
    for( int i = model.getRowCount() - 1; i >= 0; i-- ) {
        model.removeRow(i);
    }
}
半透明的墙 2024-10-03 07:10:00
    //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);
        }
    }
    //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);
        }
    }
苄①跕圉湢 2024-10-03 07:10:00

您有几个选择:

  1. 创建一个新的 DefaultTableModel(),但请记住重新附加所有侦听器。
  2. 迭代 model.removeRow(index) 进行删除。
  3. 定义您自己的模型,该模型包装 List/Set 并公开 clear 方法。

You have a couple of options:

  1. Create a new DefaultTableModel(), but remember to re-attach any listeners.
  2. Iterate over the model.removeRow(index) to remove.
  3. Define your own model that wraps a List/Set and expose the clear method.
煮酒 2024-10-03 07:10:00

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

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

I think you meant that you want to clear all the cells in the jTable and make it just like a new blank jTable.
For an example, if your table contains 40 raws, you can do following.

DefaultTableModel model = (DefaultTableModel)this.jTable.getModel();
model.setRowCount(0);
model.setRowCount(40);
飘过的浮云 2024-10-03 07:10:00

一种简单的方法是使用以下选项。

dataModel.setRowCount(0);

dataModel 是您想要清除其内容的模型

,但这不是最佳解决方案。

One of the trivial methods is to use the following option.

dataModel.setRowCount(0);

dataModel is the model which you would like clear the content on

However, it is not optiomal solution.

笑着哭最痛 2024-10-03 07:10:00

另一个简单的答案:

defaultTableModel.getDataVector().removeAllElements();

Another easy answer:

defaultTableModel.getDataVector().removeAllElements();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文