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) 返回 new ComparatorContext("Collat​​orSecondary")。

如果您只想在一个表中使用此行为,另一种快速方法是覆盖 SortableTableModel 的 getComparator(int column)。

最后但同样重要的是,您可能还需要调用 SortableTableModel 的 setAlwaysUseComparators(true),因为出于性能考虑,我们使用单元格值的 compareTo 方法(如果可用)而不使用比较器。

于 2012-02-23T19:11:55.630 回答
0

继承和多态呢?您可以从SortableTable子类化一个新类并添加自定义行为。并在需要 SortableTable 的地方使用它的实例。

于 2012-02-21T21:36:49.863 回答