在Java中从TableModel中删除列

Mar*_*ark 9 java swing tablemodel

在Java中,我使用DefaultTableModel动态地向JTable添加列.

//create DefaultTableModel with columns and no rows
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
JTable table = new JTable(tableModel);
Run Code Online (Sandbox Code Playgroud)

columnNames变量是一个包含列名的字符串数组.因此,在程序启动并运行后,用户可以选择添加其他列.我是这样做的

tableModel.addColumn("New column name");
Run Code Online (Sandbox Code Playgroud)

根据需要动态地将列添加到表中.用户还可以删除添加的列.为此,我使用以下代码:

          TableColumn tcol = table.getColumnModel().getColumn(0);
          table.getColumnModel().removeColumn(tcol);
Run Code Online (Sandbox Code Playgroud)

应该删除指定索引处的列,我也尝试过:

table.removeColumn(sheet.getColumn(assessmentName));
Run Code Online (Sandbox Code Playgroud)

它们都可以(视觉上)工作,但这就是问题所在.删除添加的列后,如果添加了另一列并且表刷新,则先前删除的列再次出现.因此,虽然它在视觉上删除了列,但最后两个代码片段实际上都没有从模型中删除它.我在这里假设,因为列已添加到需要从中移除的模型中?是否需要调用特定方法或需要实现的一些逻辑来删除列?

Bal*_*a R 6

对于你的桌子,试着打电话 table.setAutoCreateColumnsFromModel(false);

这篇文章就如何删除列和底层数据有一个很好的例子.

  • 第二个链接坏了:) (2认同)