1

現在、JTableで次のメソッドを使用して、列の自動ソートを取得しています

table.setAutoCreateRowSorter(true);

これにより、現在、各ヘッダーをクリックすると、対応する列が文字でソートされます。整数を持つ列をソートしようとすると、めちゃくちゃになります。実際の数字でソートするのではなく、一度に各桁をソートしているようです。たとえば、8 は 1 より大きいため、8 は 100 より大きいと表示されます。この動作を無効にする方法はありますか?

4

2 に答える 2

8

整数を含む列をソートしようとすると、めちゃくちゃになります

おそらく理由:

  1. 数値を文字列として保存している、または
  2. getColumnClass() データを Integer オブジェクトとして保存していますが、TableModel のメソッドをオーバーライドInteger.classしてその列を返しませんでした。適切な Comparator は、列クラスが正しい場合にのみ使用されます。

詳細および getColumnClass() メソッドをオーバーライドする方法の例については、コンセプト: レンダラーとエディターに関する Swing チュートリアルのセクションを参照してください。

于 2013-11-07T20:51:37.653 に答える
0

おそらく、特定のコンパレータを使用して行ソーターを設定する必要があります。

Comparator<Integer> comparator;
TableRowSorter sorter;
table.setRowSorter(sorter);
sorter.setModel(table.getModel());
sorter.setComparator(comparator);

ここでは、コンパレータとその問題の可能性について詳しく説明します。しかし、@camickr は、列クラスが正しく設定されていれば、通常は Integer は必要ないということも正しいです。

于 2013-11-07T20:52:48.117 に答える