Получить пользовательский объект в выбранной строке при нажатии 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);
Другие вопросы по тегам