Сортировка целых чисел с сортировщиком столбцов Jtable по умолчанию?

StackOverflow https://stackoverflow.com/questions/19846360

Вопрос

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

table.setAutoCreateRowSorter(true);

В настоящее время это позволяет мне нажать на каждый заголовок, и соответствующий столбец будет сортироваться на все с буквами. Это испортится, когда он пытается сортировать мои столбцы, которые имеют целые числа. Похоже, что он сортирует каждую цифру за раз, а не сортирует по фактическому номеру. Например, он скажет, что 8 больше, чем 100, так как 8 больше, чем 1. Есть ли какой -то способ переопределить это поведение?

Это было полезно?

Решение

Это испортится, когда пытается сортировать мои столбцы, которые имеют целые числа

Наверное, потому что:

  1. Вы храните числа как строки или
  2. Вы храните данные как целочисленный объект, но вы не переопределили getColumnClass() Метод вашей столовой, чтобы вернуть Integer.class для этого столбца. Правильный компаратор будет использоваться только тогда, когда ваш столбец верен.

Смотрите раздел из учебника Swing на Концепции: рендереры и редакторы Для получения дополнительной информации и примера того, как вы можете переопределить метод getColumnClass ().

Другие советы

Вам, вероятно, нужно установить сортировщик строки с конкретным компаратором:

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

Здесь можно найти больше о компараторе и возможных проблемах с ним. Но @camickr также прав, что если класс столбцов установлен правильно, поскольку целое число обычно не должно быть необходимым.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top