我修复了使用jide SortableTable的项目。如果表格仅包含英文数据,则排序工作正常。如果数据使用西欧混合语言,则排序失败。

如果我使用强度为“ SECONDARY”的Collator对数据集合进行排序,则可以正常工作。

问题是:如何使SortableTable使用SECONDARY整理器强度或自定义比较器对数据进行排序?

最佳答案

JIDE的SortableTableModel使用ObjectComparatorManager来获取比较器。您可以注册您的整理者(默认情况下,我们使用PRIMARY整理者)

整理者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”)。

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

最后但并非最不重要的一点,您可能还需要调用SortableTableModel的setAlwaysUseComparators(true),因为出于性能方面的考虑,我们在不使用比较器的情况下使用了单元格值的compareTo方法。

关于java - 自定义SortableTable排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9385451/

10-10 12:56