TreeViewer如何设置默认的选中(在创建时选中某一个项)

2022-08-29   338 次阅读


前言

TreeViewer是JFace提供一个功能强大的面向MVC的类,用于显示复杂的树界面。要正确的使用TreeViewer必须为其提供正确的ContentProvider,LabelProvider等。如果创建TreeViewer时设置的属性为SWT.SINGLE,则创建后默认选中第一个Item;如果属性为SWT.MULTI,则无默认选中。所以,如果想要打开树后其他界面不是一片空白,就需要启动后编程设定需要选中的树节点,本文就是解决这个问题。

解决方法

简单的说,就是使用TreeViewer的setSelection方法。举例:

treeVierwer.setSelection(new StructuredSelection(model), true);

其中,model是要选择的模型对象(即TreeItem.getData()获得的对象)。

但是经常会发现调用该方法并没有起作用。主要有以下几个原因,需要检查确认。

  1. 需要在setInput()后调用;
  2. model有效
  3. ContentProvider里的getParent()方法有正确的实现。

其他

treeViewer的setSelection方法会触发SelectionChanged等事件。

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

No PAINS No GAINS.