如何为 NatTable 中的每一列使用不同的比较器对 TreeList 进行排序

How to sort a TreeList with a different comparator for each column in a NatTable

我正在使用 NatTable 显示具有多列的树。树被展平为用于创建 TreeList 的 SortedList。

EventList<Person> eventList = GlazedLists.eventList(perfStats.getFlattenedTree());
TransformedList<Person, Person> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<Person> sortedList = new SortedList<(rowObjectsGlazedList, null);
TreeList treeList = new TreeList(sortedList, treeFormat, TreeList.nodesStartCollapsed());

这适用于显示树。但是,现在我的问题是如何正确排序?

期望的结果是对根进行正确排序,然后对内部的子项进行独立正确排序,依此类推。

现在,我正在使用 GlazedListsSortModel,它对展平的树进行排序,然后根据不起作用的树构建显示。

如有任何帮助或为我指明正确的方向,我们将不胜感激!

当使用 TreeList 时,您通过 TreeList#Format 为树结构传递 Comparator。这是确保正确创建树所必需的,因为它是从 List 派生的。因此,即使通过 SortedList 应用排序,TreeList#FormatComparator 也会最终获胜。

因此,为了解决您的要求,您需要实施一个考虑列排序的 TreeList#Format。例如,这可以通过使用 NatTable SortableTreeComparator 来完成。您可以查看我们的 TreeGridExample 以了解它的外观。

可以在 GroupByComparator 中看到更扩展的版本,用于支持使用 GroupBy 功能按列排序。