Джава:JTable переупорядочивает строки и обновляет

StackOverflow https://stackoverflow.com/questions/2204400

  •  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() (и типизация).

Надо было дольше копаться, прежде чем спрашивать!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top