2011-06-10 3 views
2

Как реализовать сортировку столбцов, содержащих только числа в JTable? Существует класс TableRowSorter. Однако использование этого приводит к следующему: для каждого числа строковое представление берется путем вызова toString, а затем вместо этого сравнивается. То, что я получаю это, например, так:Сортировка чисел в JTable

100, 13, 2, 22, 9 вместо 2, 9, 13, 22, 100

TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(table); 
table.setRowSorter(sorter); 

Чтобы избежать этого, существует следующий способ:

Поскольку мои числа являются целыми, длинными и двойными, я не понимаю, почему я должен определить смиренный компаратор стандартных классов java.lang. Есть ли более простой способ?

+0

Какой класс возвращает ваша модель для getColumnClass()? Является ли это целым числом или строкой? – KrzyH

ответ

6

Вы должны определить Number для класса столбца.

См TableModel

public Class<?> getColumnClass(int columnIndex); 
+1

Работает как очарование, спасибо. Теперь цифры также представлены более естественным образом для глаза. –

2

Как определяется ваша модель таблицы? Если метод getColumnClass возвращает Integer.class (или Long.class, или Number.class, в зависимости от того, что содержит столбец), то сортировка должна быть правильной, и вам не нужно настраивать какой-либо конкретный сортировщик строк.

Смежные вопросы