专栏和Eclipse 中的过滤树
我正在尝试创建一个包含多个列的 FilteredTree,但没有成功。如果我使用 TreeViewer
,列可以正常工作,但是当我切换到使用 FilteredTree
时,只有删除列才能使其正常工作,所以我想知道是否有一种方法可以将 FilteredTree 与列一起使用。
I'm trying to create a FilteredTree
with several columns with no luck. If I use a TreeViewer
the columns work fine but when I switch to using a FilteredTree
I can only get it to work if I remove the columns, so I'm wondering if there is a way to use FilteredTree
with columns.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您当然可以将 FilteredTree 与列查看器一起使用。例如(这也演示了使用 FilteredTree 保留 TreeColumnLayout 的使用):
现在您可以按照通常的方式创建 TreeColumn,您的列就会出现。
You can certainly use a FilteredTree with a column viewer. For example (and this also demonstrates preserving the use of a TreeColumnLayout using a FilteredTree):
Now you can just create TreeColumn's the usual way and your columns will appear.
您可以按照与 普通树。这是完整的设置。
You can do it the same way as with a normal Tree. Here is a full setup.
是的,有一种方法,这里概述了解决方案:
http://eclipsesource.com/blogs/2012/10 /26/filtering-tables-in-swtjface/
要点是默认的
PatternFilter
需要树叶作为ILabelProvider
。在基于列的树查看器中,树叶没有单一的文本表示。因此,如果您使用
TreeViewerColumns
作为树列,则PatternFilter
将为每列使用ColumnLabelProvider
。在这种情况下,您可以通过子类化PatternFilter
并使用您自己的isLeafMatch(..)
覆盖它来修复,否则,当使用
TreeColumns
定义时列,TreeViewer
将需要有一个ITableLabelProvider
。除此之外,您还将对PatternFilter
进行子类化,并再次重写方法isLeafMatch(..)
Yes, there is a way, and the solution it is outlined here:
http://eclipsesource.com/blogs/2012/10/26/filtering-tables-in-swtjface/
The point is the default
PatternFilter
needs tree leaves to be instance ofILabelProvider
. In a column-based treeviewer there is no single text representation for the tree leaf.So, if you are using
TreeViewerColumns
as tree columns, thePatternFilter
will use theColumnLabelProvider
for each column. In this case you'll fix by subclassing thePatternFilter
and overriding it with your ownisLeafMatch(..)
Otherwise, when using
TreeColumns
to define columns, theTreeViewer
will need to have aITableLabelProvider
. Beyond this, you'll subclass thePatternFilter
and, again, override the methodisLeafMatch(..)