我修复了使用jide SortableTable的项目。如果表中只包含英文数据,那么排序就可以了。如果数据是混合的西欧语言,排序将失败。
如果我使用强度为“二级”的Collator对数据集合进行排序,它可以很好地工作。
问题是:如何让SortableTable使用二级排序器强度或自定义比较器对数据进行排序?
发布于 2012-02-24 03:11:56
JIDE的SortableTableModel使用ObjectComparatorManager来获取比较器。您可以注册您的排序器(默认情况下,我们使用主排序器)
排序器排序器= Collator.getInstance();collator.setStrength(Collator.SECONDARY);
ObjectComparatorManager.registerComparator(String.class,排序器,新的ComparatorContext( "CollatorSecondary“);//”CollatorSecondary“可以是应用程序中唯一的任何字符串
然后在SortableTableModel子类中,通过覆盖列的ComparatorContext(int列)返回新的列(“CollatorSecondary”)。
另一种快速方法是覆盖SortableTableModel的getComparator(int列),如果您只想在一个表中执行此操作。
最后但并非最不重要的一点是,您可能还需要调用SortableTableModel的setAlwaysUseComparators(true),因为出于性能考虑,我们使用了单元格值的compareTo方法(如果可用),而不使用比较器。
发布于 2012-02-22 05:36:50
那么继承和多态性呢?您可以从SortableTable派生新类的子类并添加自定义行为。并在需要SortableTable的地方使用它的实例。
https://stackoverflow.com/questions/9385451
复制相似问题