在 Nattable 中添加用于整数排序的自定义比较器
Adding custom comparator for integer sorting in Nattable
我尝试对 header 层进行排序,这对文本工作正常,但对整数和日期不适合 - 所以我想为此创建一个自定义比较器。
首先对您的问题发表评论。数字和日期的排序在 NatTable 中工作得很好。事实上,所有 Comparable
数据类型的排序都与 DefaultSortConfiguration
应用的 DefaultComparator
一起正常工作。但要使其正常工作,您需要注册相应的数据类型转换器,如各种 NatTable 示例所示。如果没有转换器,NatTable 中的所有数据都将被视为字符串,这会导致 "incorrect" 排序。
第二个问题。您可以像这样注册自定义比较器:
configRegistry.registerConfigAttribute(
SortConfigAttributes.SORT_COMPARATOR,
new MyCustomComparator(),
DisplayMode.NORMAL,
CUSTOM_COMPARATOR_LABEL);
因此您需要为配置属性 SortConfigAttributes.SORT_COMPARATOR
和相应的标签注册一个 Comparator
。
但如果您没有匹配的类型转换器,则需要比较字符串。所以恕我直言,您需要注册一个 DisplayConverter
并且排序可以按预期工作,而无需自定义比较器。
我尝试对 header 层进行排序,这对文本工作正常,但对整数和日期不适合 - 所以我想为此创建一个自定义比较器。
首先对您的问题发表评论。数字和日期的排序在 NatTable 中工作得很好。事实上,所有 Comparable
数据类型的排序都与 DefaultSortConfiguration
应用的 DefaultComparator
一起正常工作。但要使其正常工作,您需要注册相应的数据类型转换器,如各种 NatTable 示例所示。如果没有转换器,NatTable 中的所有数据都将被视为字符串,这会导致 "incorrect" 排序。
第二个问题。您可以像这样注册自定义比较器:
configRegistry.registerConfigAttribute(
SortConfigAttributes.SORT_COMPARATOR,
new MyCustomComparator(),
DisplayMode.NORMAL,
CUSTOM_COMPARATOR_LABEL);
因此您需要为配置属性 SortConfigAttributes.SORT_COMPARATOR
和相应的标签注册一个 Comparator
。
但如果您没有匹配的类型转换器,则需要比较字符串。所以恕我直言,您需要注册一个 DisplayConverter
并且排序可以按预期工作,而无需自定义比较器。