2011-06-10 16 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クラスの控えめなComparatorを定義する理由はわかりません。簡単な方法がありますか?

+0

getColumnClass()でモデルから返されるクラスは何ですか?それは整数か文字列ですか? – KrzyH

答えて

6

列のクラスにNumberを定義する必要があります。あなたのテーブルモデルが定義されてどのように

参照するTableModel

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

魅力のように動作します、ありがとう。今では数字もより自然な形で表現されています。 –

2

? (列が含まれているものに応じてまたはLong.class、またはNumber.class、)getColumnClassメソッドの戻りInteger.class場合は、ソートは右であるべきであり、あなたは任意の特定の行ソーターを設定する必要はありません。

関連する問題