Получить пользовательский объект в выбранной строке при нажатии TableRowSorter

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

Я использую ArrayList<MyUserObject>datalist для хранения данных модели. Я извлекаю пользовательский объект, используя следующий метод в модели:

public MyUserObject getMyUserObject(int rowIndex)
{
    return datalist.get(rowIndex);
}

Поэтому, когда выбрана строка таблицы, я могу получить индекс выбранной строки с помощью ListSelectionListener, используя dataTable.getSelectedRow(), и, используя это значение, я могу получить пользовательский объект из модели, используя вышеуказанный метод.

Но когда используется TableRowSorter, я не могу получить фактическое значение пользовательского объекта в выбранной строке. Потому что при нажатии на tablesorter индекс строки данных изменяется. Но в модели он остается неизменным. Поэтому я не могу получить правильный пользовательский объект относительно выбранной строки.

Другими словами, изменения порядка строк в таблице должны отражаться в модели.

Должен ли я переставить массив в модели? Или есть другие простые способы сделать это?

Как я могу решить эту проблему?


person Jeyatharsini    schedule 25.05.2016    source источник


Ответы (1)


Я могу получить индекс выбранной строки с помощью

Затем вам нужно преобразовать индекс в строку модели:

int modelRow = table.convertRowIndexToModel(selectedRow);
person camickr    schedule 25.05.2016