代码如下,比如原来a被选中,现在选b,那么先是触发a的Selection事件,再触发b的Selection事件,这是为甚?import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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 Temp {
public static void main(String[] args) {
Display display = Display.getDefault();
Shell shell = new Shell (display);

Menu bar = new Menu (shell,SWT.BAR);
shell.setMenuBar(bar);

MenuItem tmp = new MenuItem (bar,SWT.CASCADE);
Menu tmpMenu = new Menu (shell,SWT.DROP_DOWN);
MenuItem a = new MenuItem (tmpMenu,SWT.RADIO);
MenuItem b = new MenuItem (tmpMenu,SWT.RADIO);

a.setText("a");
b.setText("b");

tmp.setText("Temp");
tmp.setMenu(tmpMenu); a.setSelection(true);
a.addSelectionListener(new SelectionListener (){
public void widgetDefaultSelected(SelectionEvent arg0) {
} public void widgetSelected(SelectionEvent arg0) {
System.out.println("A");
}
});

b.addSelectionListener(new SelectionListener (){
public void widgetDefaultSelected(SelectionEvent arg0) {
} public void widgetSelected(SelectionEvent arg0) {
System.out.println("B");
}
});

shell.pack();
shell.open();
while (!shell.isDisposed()){
if (!display.readAndDispatch())
display.sleep();
}
}
}