JFace TreeViewer,通过编程将元素设置在顶部

JFace TreeViewer,通过编程将元素设置在顶部,tree,element,jface,treeviewer,Tree,Element,Jface,Treeviewer,我花了几个小时,没有找到解决办法,对我来说,这似乎是正常的操作: 如何强制TreeViewer在树的visiple部分显示给定元素? 换句话说,我如何滚动到第一个要可视化的元素是一个特定的点 _______________ A B C _______________ And I want to visualize B as the first element: _______________ B C _______________ (So the tree is scrolled d

我花了几个小时,没有找到解决办法,对我来说,这似乎是正常的操作: 如何强制TreeViewer在树的visiple部分显示给定元素? 换句话说,我如何滚动到第一个要可视化的元素是一个特定的点

_______________
A
 B
 C
_______________

And I want to visualize B as the first element:
_______________
 B
 C

_______________
(So the tree is scrolled down, programatically).
我真的很想在这里得到一些帮助。 提前多谢:)


谢谢格雷格, 但是setInput不改变根吗?我想要的不是将根设置为B,这将导致示例:

__________
B
\uuuuuuuuuuuuuuuuu (B位于左上角,其子项悬挂)

但要在顶部显示B元素(不是左上角),则相当于向上或向下滚动它。
换句话说,我不想更改模型,我想应用视图来显示模型的其他部分。

调用
TreeViewer.setInput
指定二级元素列表而不是顶级元素(并确保您的内容提供商
getElements
方法理解这一点)


如果您在Eclipse中使用此功能,您可以使用
org.Eclipse.ui.part.DrillDownComposite
,它添加了“进入”、“返回”和“主页”按钮,这些按钮使用
setInput
方法来更改根目录(例如在新建/文件向导中使用)。

好的,有人在其他论坛给了我解决方案:

基本上是使用setTopItem。
其他线程中有更多详细信息。

Thankis greg,但是setInput不会更改根目录?我想要的不是将根设置为B,这将导致示例为:uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuub(B在左上角,其子项挂起)。但要在顶部显示B元素(不是左上角),则相当于向上或向下滚动它。换句话说,我不想更改模型,我想应用视图来显示模型的其他部分。唯一可以滚动树的是
setSelection(xxx,true)
showItem(TreeItem)
,但它们只确保项目可见。谢谢greg,是的,我知道这种方法,我想我会尝试:首先让它可见,然后向下滚动视图,直到它成为列表中的第一个。。。令人惊讶的是,没有一个直接的方法:对我来说,它比“让可见-无论在哪里-更合理”。再次感谢!现在我得到了你的答案,我觉得我并没有完全做错:)