我修复了使用jide SortableTable的项目。如果表格仅包含英文数据,则排序工作正常。如果数据使用西欧混合语言,则排序失败。
如果我使用强度为“ SECONDARY”的Collator对数据集合进行排序,则可以正常工作。
问题是:如何使SortableTable使用SECONDARY整理器强度或自定义比较器对数据进行排序?
最佳答案
JIDE的SortableTableModel使用ObjectComparatorManager来获取比较器。您可以注册您的整理者(默认情况下,我们使用PRIMARY整理者)
整理者collator = Collator.getInstance();
collator.setStrength(Collator.SECONDARY);
ObjectComparatorManager.registerComparator(String.class,collator,new ComparatorContext(“ CollatorSecondary”)); //“ CollatorSecondary”可以是您的应用程序中唯一的任何字符串
然后,在您的SortableTableModel子类中,通过重写该列的getColumnComparatorContext(int column)来返回新的ComparatorContext(“ CollatorSecondary”)。
如果您只想在一个表中使用此行为,则另一种快速的方法是重写SortableTableModel的getComparator(int列)。
最后但并非最不重要的一点,您可能还需要调用SortableTableModel的setAlwaysUseComparators(true),因为出于性能方面的考虑,我们在不使用比较器的情况下使用了单元格值的compareTo方法。
关于java - 自定义SortableTable排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9385451/