Java: JTable переупорядочивание строк и обновление - PullRequest
1 голос
/ 05 февраля 2010

У меня есть JTable (расширенный) и реализация TableModel, в которой у меня есть методы ...

  • moveEntryUp(int rowIdx)
  • moveEntryDown(int rowIdx)

... в рамках реализации модели таблицы. Я проверил, что они работают правильно.

Однако у меня возникают проблемы с распространением изменений, внесенных в табличную модель, в фактическую JTable. В этой таблице я разрешаю выделение только одной строки и имею отдельную кнопку для Вверх и Вниз . Когда выбран ряд, мне нужно иметь возможность перемещать этот ряд вверх и вниз, и сохраняют выделение.

1024 * Е.Г. * Если мои строки [A, B, C(selected)], и я нажимаю кнопку вверх,
Я должен получить [A, C(selected), B].

Различные подходы, которые я пробовал до сих пор, либо не обновляют значения в JTable, либо теряют выбор.


Примечание:
Я не решаюсь использовать решение, которое требует явного вызова repaint().
Предположим, что все ячейки в JTable не доступны для редактирования.

1 Ответ

2 голосов
/ 05 февраля 2010

Отвечая на свой вопрос:

int row = mTable.getSelectedRow();
mTableModel.moveEntryUp(row);
mTable.getSelectionModel().setSelectionInterval(row -1, row -1);

Где mTable - это JTable, а mTableModel - моя реализация модели таблицы, эквивалентная mTable.getModel() (и typecast).

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

...