前言
TreeViewer是JFace提供一个功能强大的面向MVC的类,用于显示复杂的树界面。要正确的使用TreeViewer必须为其提供正确的ContentProvider,LabelProvider等。如果创建TreeViewer时设置的属性为SWT.SINGLE,则创建后默认选中第一个Item;如果属性为SWT.MULTI,则无默认选中。所以,如果想要打开树后其他界面不是一片空白,就需要启动后编程设定需要选中的树节点,本文就是解决这个问题。
解决方法
简单的说,就是使用TreeViewer的setSelection方法。举例:
treeVierwer.setSelection(new StructuredSelection(model), true);
其中,model是要选择的模型对象(即TreeItem.getData()
获得的对象)。
但是经常会发现调用该方法并没有起作用。主要有以下几个原因,需要检查确认。
- 需要在
setInput()
后调用; model
有效- ContentProvider里的
getParent()
方法有正确的实现。
其他
treeViewer的setSelection方法会触发SelectionChanged等事件。
Q.E.D.
Comments | 0 条评论