相关疑难解决方法(0)

为什么我的ChangeListener只对JMenu做出反应,而不是对JMenuItem做出反应?

现在,我有一个JMenu,还有一些JMenuItems.当JMenu和JMenuItem的状态更改为"selected"时,我希望我的程序执行一些操作.我不使用MouseLitener的MouseOver,因为我希望用户也可以使用键盘在菜单中导航.现在,我写了这个监听器:

class MenuItemListener implements ChangeListener {
    @Override
    public void stateChanged(ChangeEvent arg0) {
        JMenuItem item = (JMenuItem) arg0.getSource();
        if(item.isSelected())
            System.out.println(item.getText()+" pressed!");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将这个监听器添加到JMenu时,它可以正常工作,但是当我将它添加到JMenuItem时,没有任何反应......当我删除if语句以便监听器对两者做出反应时,当菜单被选中并且被选中时我对JMenu以及对于JMenuItem.所以,正如我所见,JMenuItem无法"通过"isSelected()测试......但是什么可能是个问题呢?:S

java swing jmenuitem jmenu changelistener

4
推荐指数
1
解决办法
1716
查看次数

标签 统计

changelistener ×1

java ×1

jmenu ×1

jmenuitem ×1

swing ×1