Вы добавляете столбец в модель, используя:
gui.getRightTableModel().addColumn("Cholesterol");
Это уведомит представление об изменении данных, и таблица также будет обновлена.
Однако вы удалите столбец из таблицы, используя:
gui.getRightTable().removeColumn(…);
Это только удаляет столбец из «представления таблицы». Столбец не был удален из DefaultTableModel
. Поэтому в следующий раз, когда вы добавите столбец, он просто добавится в конец DefaultTableModel
.
Таким образом, решение состоит в том, чтобы удалить столбец из DefaultTableModel
, а не из таблицы.
К сожалению, не существует метода removeColumn(…)
.
Однако, поскольку ваше требование состоит в том, чтобы добавлять / удалять столбцы только с конца DefaultTableModel
, вы можете использовать:
model.setColumnCount(model.getColumnCount() - 2);
, который будет эффективно удалить последние два столбца из модели.
Другой вариант - не добавлять столбцы в DefaultTableModel, а вместо этого вы можете просто добавить / удалить TableColumns
из TableColumnModel
напрямую. Таким образом, это будет означать, что данные для столбца Cholestoral всегда будут в модели, но представление просто не будет отображать столбцы.
Поэтому вместо использования model.addColumn(…)
вы должны использовать метод table.addColumn(…)
.