質問

現在、jtableで次の方法を使用して、列で自動ソートを取得しています

table.setAutoCreateRowSorter(true);

これにより、現在、各ヘッダーをクリックすることができ、対応する列は文字で何でも並べ替えます。整数を備えた列を並べ替えようとすると、混乱しています。実際の数字で並べ替える代わりに、各数字を一度に並べ替えているようです。たとえば、8は1より大きいため、8は100を超えると言われます。この動作をオーバーライドできる方法はありますか?

役に立ちましたか?

解決

整数を備えた列を並べ替えようとすると混乱しています

おそらく:

  1. 数字を文字列として保存しています
  2. データを整数オブジェクトとして保存していますが、オーバーライドしませんでした getColumnClass() 戻るテーブルデルの方法 Integer.class その列のために。適切なコンパレータは、列クラスが正しい場合にのみ使用されます。

スイングチュートリアルのセクションを参照してください 概念:レンダラーと編集者 詳細と、getColumnClass()メソッドをオーバーライドする方法の例については。

他のヒント

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

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

ここ コンパレータとそれの可能性のある問題についてもっと見つけることができます。ただし、@camickrは、列クラスが正しく設定されている場合、整数が通常必要ではないことも正しいです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top