1

jide SortableTable を使用するプロジェクトを修正しまし。テーブルに英語のみのデータが含まれている場合、並べ替えは問題なく機能します。データが西ヨーロッパ言語が混在している場合、並べ替えは失敗します。

強度「SECONDARY」のCollat​​orを使用してデータ コレクションを並べ替えると、正常に動作します。

問題は、SortableTable を作成して、SECONDARY コレーターの強度またはカスタム コンパレーターを使用してデータを並べ替える方法です。

4

2 に答える 2

2

JIDE の SortableTableModel は ObjectComparatorManager を使用してコンパレータを取得します。Collat​​or を登録できます (デフォルトでは、PRIMARY collat​​or を使用します)

Collat​​or collat​​or = Collat​​or.getInstance(); collat​​or.setStrength(Collat​​or.SECONDARY);

ObjectComparatorManager.registerComparator(String.class, collat​​or , new ComparatorContext("Collat​​orSecondary")); // "Collat​​orSecondary" は、アプリ内で一意の任意の文字列にすることができます

次に、SortableTableModel サブクラスで、列の getColumnComparatorContext(int column) をオーバーライドして、新しい ComparatorContext("Collat​​orSecondary") を返します。

別の簡単な方法は、1 つのテーブルでこの動作が必要な場合は、SortableTableModel の getComparator(int column) をオーバーライドすることです。

最後になりましたが、SortableTableModel の setAlwaysUseComparators(true) を呼び出す必要がある場合もあります。これは、パフォーマンスを考慮して、コンパレータを使用せずにセル値の compareTo メソッドを使用できる場合はそれを使用したためです。

于 2012-02-23T19:11:55.630 に答える
0

継承とポリモーフィズムはどうですか?SortableTableから新しいクラスをサブクラス化し、カスタム動作を追加できます。そして、SortableTableが必要な場所でそのインスタンスを使用します。

于 2012-02-21T21:36:49.863 に答える