SortableTable的自定义排序

发布于 2025-01-07 23:34:51 字数 392 浏览 0 评论 0原文

我修复了使用 jide SortableTable 的项目。如果表仅包含英文数据,则排序效果很好。如果数据采用混合西欧语言,排序将失败。

如果我使用 Collat​​or 具有“SECONDARY”强度,效果很好。

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

I fix project which uses jide SortableTable. If table contains data only in English, then sorting works just fine. In case data is in mixed western European languages, sorting fails.

If i sort the data collections using Collator with strength "SECONDARY" it works fine.

The question is: how to make the SortableTable to sort data with SECONDARY collator strength or with custom comparator?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

°如果伤别离去 2025-01-14 23:34:51

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 方法(如果可用)而不使用比较器。

JIDE's SortableTableModel uses ObjectComparatorManager to get the comparator. You can register your Collator (by default, we use PRIMARY collator)

Collator collator = Collator.getInstance();
collator.setStrength(Collator.SECONDARY);

ObjectComparatorManager.registerComparator(String.class, collator , new ComparatorContext("CollatorSecondary")); // "CollatorSecondary" could be any string that is unique in your app

Then in your SortableTableModel subclass, you return new ComparatorContext("CollatorSecondary") by overriding getColumnComparatorContext(int column) for the column.

Another quick way is to override SortableTableModel's getComparator(int column) if you just want this behavior in one table.

Last but not least, you may also need to call SortableTableModel's setAlwaysUseComparators(true) because for the performance consideration, we used the cell value's compareTo method if available without using a comparator.

心凉 2025-01-14 23:34:51

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

How about inheritance and polymorphism?
You can subclass a new class from SortableTable and add custom behavior. And use its instance where you need SortableTable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文