JTable, как сохранить новый индекс строки

У меня следующая Проблема. Допустим, у меня есть JTable со следующими значениями:

1 2 3 4 5

Теперь я выбираю «3» и нажимаю кнопку, которая сохраняет индекс строки и печатает «3». У меня есть еще одна кнопка, назовем ее «следующая кнопка», когда я нажимаю ее, она печатает «4»

Теперь я сортирую (или в этом случае просто рандомизирую) всю таблицу, и теперь она выглядит так:

2 5 4 1 3

Когда я сейчас нажимаю кнопку «Далее», я хочу, чтобы она печатала «1», потому что это значение после «4».

Как я могу управлять этим, чтобы работать? Это уже работает, когда я не сортирую таблицу, чем могу просто распечатать сохраненную строку +1...

Есть ли что-то вроде прослушивателя сортировки, чтобы я мог перезаписать сохраненную строку новым значением?

Привет Тимоти


person Timothy    schedule 04.07.2010    source источник


Ответы (2)


Я предлагаю вам погрузиться в мир TableModel. При программировании в Swing обычно лучше сразу отделить модель от компонента. Добавьте в таблицу столбец для обработки порядка, но не показывайте его.

Более простой метод, но немного тупиковый, состоит в том, чтобы сделать объект, хранящийся в таблице, типа вашего собственного изобретения. Просто переопределите toString, чтобы вернуть отображаемое представление.

person Tom Hawtin - tackline    schedule 04.07.2010
comment
да, конечно, я использую TableModel. На самом деле это может сработать, если у меня будет еще один столбец с идентификаторами. Я попробую. Спасибо за ответ - person Timothy; 05.07.2010

Насколько я понимаю, проблема связана с последним индексом, в вашей проблеме, когда он равен 4, следующий должен быть 1. эту проблему можно решить, сделав условие if . например, если я предполагаю, что вы сохраняете индекс в переменной rowIndex = 4; if(rowIndex ==jTable.getRowCount()-1) nextRowinsex = 1 ; // который является первым индексом

person palAlaa    schedule 04.07.2010