对于JMenu下没有JMenuItem的情况,JMenu应该用哪个listener?

解决方案 »

  1.   

    使用方法:    void addMenuListener(MenuListener l)  监听鼠标事件
      

  2.   

    为什么不用些IDE工具?
    里面代码自动添加的,可以提高开发效率
      

  3.   

    attach  listener of addActionListener to JMenu ,that's ok
      

  4.   

    actionlistener和menulistener都试过,好像都不能实现每次单击menu都执行的效果。
      

  5.   

    menu.addMenuListener(
                new MenuListener(){
                    public void menuCanceled(MenuEvent e){
                        System.out.println("menuCanceled");
                    }
                    public void menuDeselected(MenuEvent e){
                        System.out.println("menuDeselected");
                    } 
                    public void menuSelected(MenuEvent e){
                        System.out.println("menuSelected");
                    }
            });
      

  6.   

    比如说,我要在点击这个menu时执行a()方法,我首先在menuSelected中加入a(),之后在菜单被选中时就会执行这个方法。但如果在菜单已选中的状态下再点一下菜单,就会执行menuDeselected,此时就不再会执行a()方法,而此时我还是希望执行a方法的。但若我在menuDeselected方法中也加入a方法,则在菜单被选中后点击窗体则仍会执行menuDeselected方法,这是我不愿看到的。这个问题如何解决?
      

  7.   

    首先,楼主要搞清楚一点 JMenu是用来放置JMenuItem的,它本身并不响应鼠标的clicked事件;不清楚楼主,为什么不使用JmenuItem;在 楼主的实现中 并不是响应的点击事件,而是对于菜单的选中事件,在这种方法实现中,如果用户通过键盘来选中的话一样可以执行a()方法;
    对于楼主在别的地方 触发 取消菜单选中时不希望执行a(),可以在menuDeselected()方法中判断一下e.getsoure();如果不是JMenu就不执行。
    最后还是建议楼主 使用JMenuItem,毕竟用JMenu做这个不专业啊,呵呵
      

  8.   

    可我想达到这个程序点击菜单的效果,应该怎么做?http://bertpu.googlepages.com/1.exe