現在、JTableで次のメソッドを使用して、列の自動ソートを取得しています
table.setAutoCreateRowSorter(true);
これにより、現在、各ヘッダーをクリックすると、対応する列が文字でソートされます。整数を持つ列をソートしようとすると、めちゃくちゃになります。実際の数字でソートするのではなく、一度に各桁をソートしているようです。たとえば、8 は 1 より大きいため、8 は 100 より大きいと表示されます。この動作を無効にする方法はありますか?
整数を含む列をソートしようとすると、めちゃくちゃになります
おそらく理由:
getColumnClass()
データを Integer オブジェクトとして保存していますが、TableModel のメソッドをオーバーライドInteger.class
してその列を返しませんでした。適切な Comparator は、列クラスが正しい場合にのみ使用されます。詳細および getColumnClass() メソッドをオーバーライドする方法の例については、コンセプト: レンダラーとエディターに関する Swing チュートリアルのセクションを参照してください。
おそらく、特定のコンパレータを使用して行ソーターを設定する必要があります。
Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);
ここでは、コンパレータとその問題の可能性について詳しく説明します。しかし、@camickr は、列クラスが正しく設定されていれば、通常は Integer は必要ないということも正しいです。