设置 JFace TreeViewer 的滚动条位置

Setting scrollbar position of JFace TreeViewer

在我的代码中,我有一个 TreeViewer,它通过定期调用 setInput() 并传递新输入来刷新。由于系统其余部分的复杂性,我不希望更改代码以使用添加、删除和刷新。 不幸的是,这意味着滚动条每隔一秒左右就会跳到顶部。有没有办法保留滚动条位置并在刷新后重新设置它,即使没有选择任何元素?

我已经试过了

int s = treeViewer.getTree().getVerticalBar().getSelection();
treeViewer.setInput(input); 
treeViewer.getTree().getVerticalBar().setSelection(s);

但我想这只有在选择了一个项目时才有效。

没关系,看起来只要在开始时设置输入,然后每当之前输入被传递时调用刷新就可以了。仍然不知道如何以编程方式设置滚动条,但显然不再需要它了,因为简单地使用刷新确实修复了跳到顶部的错误。