swt jface tree treeviewer
tree.setSelection(tree.getItem(0))和viewer.setSelection(new StructuredSelection(new Object[] { tree.getItem(0).getData() }));之间是有区别的,前者不会触发viewer的selectionChanged事件,后者则会触发,这里还需要注意的是在构造StructuredSelection的时候,传递的参数是item的数据,而不是item,否则触发SelectionChanged事件的时候在event的selection中是没有数据的。
treeviewer 添加右键菜单
http://images.cnitblog.com/blog/499166/201310/24101820-80589d423f174aceb9dde0f3fc7f7534.png
treeviewer 添加右键菜单
http://images.cnitblog.com/blog/499166/201310/24101820-80589d423f174aceb9dde0f3fc7f7534.png
如图:在树上单击鼠标右键会弹出 弹出式菜单。做法其实很简单,先做一个树:
final TreeViewer treeViewer = new TreeViewer(group, SWT.BORDER); tree = treeViewer.getTree(); tree.setBounds(0, 10, 192, 354); treeViewer.setContentProvider(new TreeContentProvider()); treeViewer.setLabelProvider(new TreeLabelProvider()); initPopup(); //主要是这个函数,将tree生成后,实现这个函数就行了。
public void initPopup(){ Menu menu=new Menu(tree); MenuItem newItem=new MenuItem(menu,SWT.PUSH); newItem.setText("新增部门"); MenuItem newMemberItem=new MenuItem(menu, SWT.PUSH); newMemberItem.setText("新增员工"); MenuItem editItem=new MenuItem(menu,SWT.PUSH); editItem.setText("编辑"); MenuItem deleteItem=new MenuItem(menu, SWT.PUSH); deleteItem.setText("删除"); tree.setMenu(menu); }
若想给MenuItem添加响应:
public void initPopup(){ Menu menu=new Menu(tree); MenuItem addNode=new MenuItem(menu,SWT.PUSH); addNode.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { } }); addNode.setText("添加节点"); MenuItem deleteNode=new MenuItem(menu, SWT.PUSH); deleteNode.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { } }); deleteNode.setText("删除节点"); tree.setMenu(menu); }