如何解决如何使用ICU归类规则对JavaFX TableView中的数据进行排序?
我想使用ICU归类规则,使用JavaFX在TableColumn
中的TableView
中对TableView
中的(String)数据进行排序,因此无法在线找到示例。这对我有用。 (我假设读者已经知道如何将数据获取到import com.ibm.icu.text.RuleBasedCollator;
中,因为这不是重点。)
解决方法
首先,我们导入ICU RuleBasedCollator:
TableView<Person> personTable;
TableColumn<Person,String> firstNameColumn;
TableColumn<Person,String> lastNameColumn;
第二,假设我们有一个Person类,其中有名字和姓氏String字段。 TableView有两个TableColumns,一个用于名字,另一个用于名字:
String newRules = "& S < C & Mu < Mue";
RuleBasedCollator collatorViaRules = new RuleBasedCollator(newRules);
Comparator<String> comparatorViaRules = Comparator.comparing(String::toString,collatorViaRules);
firstNameColumn.setComparator((String s1,String s2) -> {
return comparatorViaRules.compare(s1,s2);
});
lastNameColumn.setComparator((String s1,s2);
});
第三,在视图控制器的initialize()方法中,添加如下内容:
newRules
RuleBasedCollator
中的两个ICU规则会将任何C放在S后面,并将Mu ...放在Mue前面。 (这些在这里并不是很有意义;它们是要查看是否应用了ICU规则。实际情况可能会有更复杂的规则。)
我们使用ICU规则创建ICU Comparator
,然后使用这些规则创建{{1}}。
最后,我们将列字段的比较器设置为使用该比较器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。