Удаление колонки из TableModel в Java

В Java я использую DefaultTableModel для динамического добавления колонки в JTable.

//create DefaultTableModel with columns and no rows
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
JTable table = new JTable(tableModel);

Переменная columnNames представляет собой строковый массив с именами колонок. Таким образом, после запуска программы пользователь имеет возможность добавить дополнительные колонки. Я делаю это следующим образом

tableModel.addColumn("New column name");

Что динамически добавляет столбец в таблицу по желанию. Пользователь также может удалить добавленные столбцы. Для этого я использую следующий код:

          TableColumn tcol = table.getColumnModel().getColumn(0);
          table.getColumnModel().removeColumn(tcol);

который должен удалить столбец по указанному индексу, я также пробовал:

table.removeColumn(sheet.getColumn(assessmentName));

Оба они работают (визуально), но вот в чем проблема. После удаления добавленного столбца, если добавляется другой столбец и таблица обновляется, ранее удаленный столбец снова находится там. Таким образом, хотя визуально столбец удаляется, ни один из двух последних фрагментов кода фактически не удаляет его из модели. Я предполагаю, что поскольку столбец был добавлен в модель, именно оттуда его и нужно удалить? Есть ли какой-то конкретный метод, который мне нужно вызвать, или какая-то логика, которую мне нужно реализовать, чтобы удалить столбец?

9
задан Brian Tompsett - 汤莱恩 25 April 2017 в 08:59
поделиться