2011-06-10 85 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,取決於列所包含的內容),那麼排序應該是正確的,並且不應該配置任何特定的行分類器。