2011-06-10 196 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); 

为了避免这种情况,有以下方法:

sorter.setComparator(column,comparator); 

由于我的数字只是Integer,Long和Double,所以我不明白为什么我应该定义一个标准java.lang类的简单比较器。有更容易的方法吗?

+0

你的模型返回什么类的getColumnClass()?它是整数还是字符串? – KrzyH 2011-06-10 14:32:44

回答

6

您应该为列的类定义Number。

见的TableModel

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

工程就像一个魅力,谢谢。现在这些数字也以更自然的方式表现出来。 – 2011-06-10 14:38:44

2

如何定义你的表格模型?如果getColumnClass方法返回Integer.class(或Long.classNumber.class,取决于列所包含的内容),那么排序应该是正确的,并且不应该配置任何特定的行分类器。