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