单选菜单项生成SelectionListener两次 - SWT

Maj*_*imi 5 java swt menuitem

我有一个名为"radio"的顶级菜单,包含两个收音机MenuItem.我SelectionListener为两者都添加了.

    MenuItem radio = new MenuItem(bar, SWT.CASCADE); /* bar is the menu bar */
    radio.setText("Radio");

    Menu menu = new Menu(radio);
    radio.setMenu(menu);

    MenuItem mntmOption_1 = new MenuItem(menu, SWT.RADIO);
    mntmOption_1.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Option 1 selected");
        }
    });
    mntmOption_1.setText("Option1");

    MenuItem mntmOption_2 = new MenuItem(menu, SWT.RADIO);
    mntmOption_2.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            System.out.println("Option 2 selected");
        }
    });
    mntmOption_2.setText("Option2");
Run Code Online (Sandbox Code Playgroud)

首先我选择mntmOption_1它显示:

Option1 selected
Run Code Online (Sandbox Code Playgroud)

然后我选择mntmOption_2它显示:

Option1 selected
Option2 selected
Run Code Online (Sandbox Code Playgroud)

它似乎正在解雇两个听众.这是一个问题:为什么?我正在运行WinXP.

Ale*_* K. 9

由于第二个单选按钮无法选择,因此它会触发两个侦听器.如果您只想对特定状态做出反应,则应检查窗口小部件状态.