0

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.
  }
});

有什么建议吗?

4

2 回答 2

1

有关如何同步两个表的完整示例,请参阅此SWT Snippet

于 2012-01-25T15:20:02.093 回答
1

根据我的阅读,滚动表格或树是不可能的(除非同时发生了变化)。以编程方式更改滚动条拇指的位置不会更改表/树的视口。

但是,如果以下代码段适合您,您可以尝试:

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

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

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

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

viewer.setSelection(otherViewer.getSelection)

(由ISelectionChangedListener您的问题调用)。

于 2012-01-24T08:51:58.343 回答