标题:SWT树节点上弹出菜单的实现
作者:kagula(lee353086)
日期:20080204
简介:
通过示代码片段,介绍如何在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/