Джава:JTable переупорядочивает строки и обновляет
-
18-09-2019 - |
Вопрос
у меня есть JTable
(расширенный) и внедрение TableModel
, в котором у меня есть методы...
moveEntryUp(int rowIdx)
moveEntryDown(int rowIdx)
...в рамках реализации табличной модели.Я проверил, что они работают правильно.
Однако у меня возникли проблемы с распространением изменений, внесенных в модель таблицы, на фактическую модель. JTable
.В этой таблице я разрешаю выбор только одной строки и имею отдельную кнопку для Вверх и Вниз.Когда строка выбрана, мне нужно иметь возможность перемещать эту строку вверх и вниз, и сохранить выбор.
Например.
Если мои строки [A, B, C(selected)]
, и я нажимаю кнопку вверх,
я должен получить [A, C(selected), B]
.
Различные подходы, которые я пробовал до сих пор, либо не обновляли значения в JTable, либо теряли выбор.
ПРИМЕЧАНИЕ:
Я не решаюсь использовать решение, которое требует явного вызова repaint()
.
Предположим, что все ячейки JTable
являются нет редактируемый.
Решение
Отвечая на собственный вопрос:
int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);
Где mTable
это JTable, и mTableModel
это моя реализация модели таблицы и эквивалентна mTable.getModel()
(и типизация).
Надо было дольше копаться, прежде чем спрашивать!