Отображение щелчка мышью на изменение состояния сортировки реализовано в BasicTableHeaderUI и происходит исключительно через toggleSortOrder (columnIndex) RowSorter. Поведение по умолчанию - переключать
НЕПРАВИЛЬНО -> Восходящий -> По убыванию -> Восходящий -
то есть, нет пути назад в несортированное. Если необходимо просто расширить круг на:
НЕПРАВИЛЬНО -> Восходящее -> По убыванию - Несортировано -> Восходящее -
путь состоит в том, чтобы создать подкласс TableRowSorter и переопределить его toggleSortOrder соответственно
/**
* @inherited <p>
*/
@Override
public void toggleSortOrder(int column) {
List<? extends SortKey> sortKeys = getSortKeys();
if (sortKeys.size() > 0) {
if (sortKeys.get(0).getSortOrder() == SortOrder.DESCENDING) {
setSortKeys(null);
return;
}
}
super.toggleSortOrder(column);
}
Примечание: это немного упрощено, поскольку не учитывает n-ые отсортированные столбцы, для полной версии см. SwingX DefaultSortController. Или используйте SwingX для начала, его JXTable имеет api для настройки цикла сортировки, например
table.setSortOrderCycle(ASCENDING, DESCENDING, UNSORTED);
Приветствие
Жанетт