|
简介: 通过示代码片段,介绍如何在SWT的Tree对象TreeItem节点上,实现弹出菜单。
关键词: SWT、Tree、TreeItem、Menu、MenuItem
正文: [1]为Tree控件建立Listen,例如下代码: tree1 = new Tree(dialogShell, SWT.NONE); ... tree1.addMouseListener(new MouseAdapter() { public void mouseDoubleClick(MouseEvent evt) { tree1MouseDoubleClick(evt); } public void mouseDown(MouseEvent evt) { tree1MouseDown(evt); } });
[2]为Tree控件,增加节点! 使用TreeItem类对象,略。
[3]为用户建弹出菜单; 在tree1MouseDown代码段内,添加下面代码。 TreeItem selected=tree1.getItem(new Point(evt.x,evt.y)); //取节点控件 if(selected!=null&&evt.button==3) //如果取到节点控件,且是鼠标右键 { Menu menu=new Menu(dialogShell,SWT.POP_UP); //为节点建POP UP菜单 if(selected.getParentItem()!=null) //如果不是根节点 { MenuItem mi4=new MenuItem(menu,SWT.PUSH); //为菜单,建菜单项 mi4.setText("向["+selected.getText()+"]节点,发送即时消息!"); mi4.setData(selected.getText()); //向响应菜单项事件的代码,传递值。 mi4.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { //向指定用户发送消息! MenuItem mi=(MenuItem)e.widget; //取菜单项Widget String selected=(String)mi.getData(); //取,在建立菜单项时,传过来的对象。 if(selected!=null) { //添加,响应代码 } } }); } else { 如果,是根节点,即selected.getParentItem()==null为真。 } tree1.setMenu(menu); //设置弹出菜单 }else if(evt.button==3) //选中的是树形控件的空白区 { //响应代码段,略 }
参考网站: [1]SWT官网 http://www.eclipse.org/swt/ [2]Jigloo官网 http://www.cloudgarden.com/jigloo/
|