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.pngswt jface tree treeviewer

如图:在树上单击鼠标右键会弹出 弹出式菜单。做法其实很简单,先做一个树:

swt jface tree treeviewer
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生成后,实现这个函数就行了。
swt jface tree treeviewer

 

swt jface tree treeviewer
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);
    }
swt jface tree treeviewer

 

若想给MenuItem添加响应:

swt jface tree treeviewer
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);
    }
swt jface tree treeviewer