Получить пользовательский объект в выбранной строке при нажатии TableRowSorter
Я использую модель таблицы для обработки данных в таблице. В этом,
я использую ArrayList<MyUserObject>datalist
хранить данные модели. Я извлекаю пользовательский объект, используя следующий метод в модели:
public MyUserObject getMyUserObject(int rowIndex)
{
return datalist.get(rowIndex);
}
Поэтому, когда строка таблицы выбрана, я могу получить индекс выбранной строки с ListSelectionListener
с помощью dataTable.getSelectedRow()
и используя это значение, я могу извлечь объект пользователя из модели, используя вышеуказанный метод.
Но когда используется TableRowSorter, я не могу получить фактическое значение пользовательского объекта в выбранной строке. Потому что при нажатии TableSorter индекс строки данных изменяется. Но в модели он остается неизменным. Поэтому я не могу получить правильный объект пользователя относительно выбранной строки.
Другими словами, изменения порядка строк в таблице должны быть отражены в модели.
Должен ли я переставить arraylist в модели? Или есть ли другие простые способы сделать это?
Как я могу решить эту проблему?
1 ответ
Я могу получить индекс выбранной строки с
Затем вам нужно преобразовать индекс в строку модели:
int modelRow = table.convertRowIndexToModel(selectedRow);