gpt4 book ai didi

java - 将 2 个 jface TreeViewers 垂直对齐到特定元素

转载 作者:行者123 更新时间:2023-12-02 08:00:40 24 4
gpt4 key购买 nike

我在页面上有两个 TreeViewer 对象(2 列,每列中有一个 TreeViewer),并且我想在另一个树滚动或滚动时垂直对齐一棵树或已选择。

import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Tree;

我认为解决方案应该类似于

treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent arg0) {
TreeViewer mirrorTree = (treeViewer == treeVwrSource ? treeVwrTarget : treeVwrSource);
// find position of selected element (element x) in treeViewer
// set position of element x in mirrorTree, it is already selected.
}
});

有什么建议吗?

最佳答案

根据我所读到的内容,滚动表或树是不可能直接实现的(除非同时发生了变化)。以编程方式更改滚动条 slider 的位置不会更改表/树的视口(viewport)。

但是您可以尝试以下代码片段是否适合您:

Tree tree1 = ...;
Tree tree2 = ...;

int topIndex = tree1.indexOf(tree1.getTopItem());
tree2.setTopItem(tree2.getItem(topIndex));

您可以在注册到树的垂直滚动条 (tree.getVerticalBar()) 的 SelectionListener 中调用该代码。

同步选择相当容易(如果两个树查看器显示相同的输入/模型):

viewer.setSelection(otherViewer.getSelection)

(由问题中的 ISelectionChangedListener 调用)。

关于java - 将 2 个 jface TreeViewers 垂直对齐到特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com