显然,如果ILazyTree(TreePath)ContentProvider
不支持使用排序和过滤TreeViewers
。所以设置ViewerFilters
或设置Sorters/Comparators
你的 TreeView 不会有任何好处。也许这与不知道所有元素有关,包括那些目前不可见的元素。
为了支持这个声明,这里是类的 javadoc 摘录org.eclipse.jface.viewers.TreeViewer
:
如果内容提供者是 an
ILazyTreeContentProvider
或 anILazyTreePathContentProvider
,则必须使用 {@link SWT#VIRTUAL} 样式位创建基础树,树查看器将不支持排序或过滤,并且必须通过调用 {@link #setUseHashlookup 启用哈希查找(布尔值)}。
我目前看到的唯一解决方案是让每个节点的子节点都已订购。如果您需要动态排序,即能够在运行时以 desc 或 asc 顺序切换排序顺序,那么您需要为此提出自己的解决方案,例如在填充和更新子项时监视排序的布尔标志。
您是否知道可能有更好的解决方案,可能涉及更多的 jface API?