【问题标题】:JFace TreeViewer, setting the element on top programaticallyJFace TreeViewer,以编程方式将元素设置在顶部
【发布时间】:2013-10-10 21:51:51
【问题描述】:

我已经花了几个小时,但没有找到对我来说似乎很自然的事情的解决方案: 如何强制 TreeViewer 在树的可见部分显示给定元素? 换句话说,我怎样才能将它滚动到要可视化的第一个元素是一个特定的点?

_______________
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

   ____ (左上角的 B 及其子项悬空)。

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

【问题讨论】:

    标签: tree element jface treeviewer


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 greg,但是 setInput,不会改变根目录?我想要的不是将根设置为 B,因此示例中的结果是:__________ B __________(B 在左上角,其子项悬空)。但是要在顶部(不是左上角)显示B元素,所以相当于向上或向下滚动它。换句话说,我不想改变模型,我想应用视图来显示模型的其他部分。
    • 唯一可以滚动树的是setSelection(xxx, true)showItem(TreeItem),但它们只确保项目可见。
    • 谢谢greg,是的,我知道这种方法,我想我会尝试:首先让它可见,然后向下滚动视图直到它成为列表的第一个......它令人惊讶的是没有直接的方法:对我来说,它比 make visible -wherever- 更有意义。再次感谢!既然我得到了你的答案,我觉得我并没有完全错:)
    【解决方案2】:

    好的,有人在其他论坛中给了我解决方案: http://www.eclipse.org/forums/index.php/m/1123124/.

    基本上就是setTopItem的使用。 更多细节在另一个线程中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多