сортировать записи JTable, не нажимая на заголовок столбца

Я реализовал сортировку строк в JTable как с помощью DefaultRowSorter, так и с помощью моего пользовательского класса сортировщика строк. Все работает нормально, нажав на заголовок столбца, чтобы отсортировать таблицу.

Но что, если я хочу вызвать операцию сортировки из кода моего приложения (без нажатия на заголовок столбца). Какой метод я должен вызвать?

РЕДАКТИРОВАТЬ:

Я инициализирую свой сортировщик строк таблицы следующим образом:

public void buildRowSorter() {
        TableRowSorter<MyModel> sorter = new TableRowSorter<MyModel>((MyModel)this.table.getModel());

        try {
            sorter.setComparator(0, new MyCustomComparator<Double>(sorter,0));
            sorter.setComparator(1, new MyCustomComparator<String>(sorter,1));
        } catch (ParseException e) {
            e.printStackTrace();
        }

        this.table.setRowSorter(sorter);
    }

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


person Heisenbug    schedule 07.07.2011    source источник
comment
Возможный дубликат stackoverflow.com/questions/4268124/jtable-and-sorting   -  person Nivas    schedule 07.07.2011


Ответы (2)


насколько я вижу, у вас есть собственный comparator (почему он сохраняет ссылку на сортировщик? выглядит подозрительно), а не собственный RowSorter.

Предполагаемый способ изменить сортировку — вызвать toggleSortOrder(column) в RowSorter. Для более точного управления вам может потребоваться доступ к DefaultRowSorter, т.е. его метод setSortKeys.

person kleopatra    schedule 07.07.2011

Попробуйте вызвать sort() метод DefaultRowSorter.

person Harry Joy    schedule 07.07.2011
comment
У меня нет ссылки на DefaultRowSorter. Я отредактировал свой вопрос, чтобы попытаться объяснить его лучше. - person Heisenbug; 07.07.2011
comment
@Overbose: вы можете получить это как DefaultRowSorter sorter = ((DefaultRowSorter)table.getRowSorter()); - person Harry Joy; 07.07.2011