我正在使用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,它对扁平化的树进行排序,然后从无效的树中构建显示。
任何帮助或只是向我指出正确的方向,将不胜感激!
答案 0 :(得分:0)
使用TreeList
时,您通过Comparator
为树结构传递了TreeList#Format
。这是为了确保树是正确创建的,因为它是从List
派生的。因此,即使通过SortedList
进行了排序,Comparator
中的TreeList#Format
最终还是会获胜。
要解决您的要求,因此您需要实现一个考虑到列排序的TreeList#Format
。例如,可以通过使用NatTable SortableTreeComparator
来完成此操作。您可以查看我们的TreeGridExample,以了解其外观。
可以在GroupByComparator中看到一个更扩展的版本,该版本用于支持具有GroupBy功能的按列排序。