swt中弹出菜单复选框的问题
编程界小明哥
Java领域优质创作者
博客专家认证 2008-04-16 10:38:02 我的shell中有一个树
对 树有右键弹出菜单功能
菜单里面有几个子菜单
要对子菜单进行复选
有一个普通的可以用
当你选中后前面会有个勾
它的代码如下:
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class Snippet89 {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Menu menu = new Menu(shell,SWT.POP_UP);
for (int i = 0; i < 4; i++) {
MenuItem item = new MenuItem(menu, SWT.CHECK);
item.setText("Item " + i);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MenuItem item = (MenuItem) e.widget;
if (item.getSelection()) {
System.out.println(item + " selected");
} else {
System.out.println(item + " unselected");
}
}
});
}
shell.setMenu(menu);
shell.setSize(300, 300);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
但是我的这个怎么弄都不行
我是参照着代码来的
怎么就不行呢 ?
我的关键代码如下:
sourceTree.addListener(SWT.MenuDetect, new Listener() {
public void handleEvent(Event event) {
//下面是弹出菜单
final Display display = Display.getDefault();
Menu menu = new Menu(display.getActiveShell(),SWT.POP_UP);
for (int i = 0; i < 4; i++) {
MenuItem item = new MenuItem(menu, SWT.CHECK);
item.setText("Item " + i);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
MenuItem item = (MenuItem) e.widget;
if (item.getSelection()) {
System.out.println(item + " selected");
} else {
System.out.println(item + " unselected");
}
}
});
}
menu.setLocation(display.getCursorLocation());
menu.setVisible(true);
}
});
请大家帮我看看,非常感谢!!!!