JXTable convertRowIndexToModel неправильный результат после сортировки? - PullRequest
3 голосов
/ 10 августа 2011

У меня есть JXTable, в котором модель представляет собой List различных объектов. Существует проблема при попытке сопоставить индекс вида с индексом модели после сортировки вида по заголовку выбранного столбца. Используя этот код,

int[] selecteds = getTableMember().getSelectedRows();
if (selecteds != null && selecteds.length > 0) {
    for (int row : selecteds) {
        int rr = getTableMember().convertRowIndexToModel(row);
            System.out.println(row+":"+rr);
    }
}

Я получаю этот результат:

11:240
12:328
13:1174
14:328
15:1174

Я не могу понять, почему разные индексы вида отображаются на один и тот же модельный индекс?

Решенная проблема : Я вызвал fireTableRowsUpdated сразу после изменения для каждой строки, чтобы выбранный индекс больше не был правильным.

1 Ответ

2 голосов
/ 11 августа 2011

Убедитесь, что объекты в List действительно различны. В частности, Comparator, используемый DefaultRowSorter, должен быть реализован правильно. Обратите внимание, что по умолчанию используется метод toString() базовых объектов, но вы можете указать собственную реализацию.

...