Сортировка целых чисел с помощью сортировщика столбцов JTable по умолчанию?
В настоящее время я использую следующий метод на моей JTable, чтобы получить автоматическую сортировку по столбцам
table.setAutoCreateRowSorter(true);
В настоящее время это позволяет мне щелкать по каждому заголовку, и соответствующий столбец будет сортировать что-либо с буквами. Это портит, когда он пытается отсортировать мои столбцы, которые имеют целые числа. Похоже, что сортирует каждую цифру за раз вместо сортировки по фактическому номеру. Например, он скажет, что 8 больше 100, так как 8 больше 1. Есть ли какой-нибудь способ, которым я могу переопределить это поведение?
2 ответа
Это портит, когда он пытается отсортировать мои столбцы, которые имеют целые числа
Вероятно потому что:
- Вы храните числа в виде строк или
- Вы сохраняете данные как объект Integer, но не переопределяете
getColumnClass()
метод вашей TableModel для возвратаInteger.class
для этого столбца. Правильный компаратор будет использоваться только тогда, когда ваш класс столбца правильный.
Обратитесь к разделу из учебника по Swing, посвященному понятиям: средства визуализации и редакторы, для получения дополнительной информации и примера того, как можно переопределить метод getColumnClass().
Вам, вероятно, нужно установить сортировщик строк с конкретным компаратором:
Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);
Здесь можно узнать больше о компараторе и возможных проблемах с ним. Но @camickr также прав, что, если класс столбца установлен правильно, для Integer обычно не требуется.