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