Menu 中是不是不能 addSelectionListener(listener);MenuItem 才可以.我想统一处理菜单的选择事件,应该如何做.象这样menu (假设最上层,我想在他上面侦听,就不用一个一个下次menuItem去侦听了)menu.addxxxListener(new MyMouseDoubleClick());private static final class MyMouseDoubleClick extends MouseAdapter
{
    public void mouseDoubleClick(MouseEvent e) 
    {
        switch (e.是哪个menuItem 选择)
    { 
       case a,b: OpenWindow(xxx);   
              case c: OpenWindow(xxx);
              .........
     } 
    }        
}
最好可以贴出代码,给我参考一下.

解决方案 »

  1.   

    可以考虑用继承关系,在父类中实现那个侦听,然后子类为各个menuItem,这只是个大概思路,具体的你可能还需要再考虑一下
      

  2.   

    初始化菜单项的时候设置一个actionCommand属性menuItem.setActionCommand("");然后switch那里改用if ... esle if ...形式,根据e.getActionCommand()判断
      

  3.   

    监听的时候可以这样                for(int i = 0; i < menu.getComponentCount(); i++)
                    {
                        Component cmp = menu.getComponent(i);
                        
                        if(cmp instanceof JMenuItem)
                        {
                            ((JMenuItem)cmp).addActionListener(XXXX);
                        }
                    }
      

  4.   

    差不多是这样子的ActionListener l = new ActionListener() { public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand() == "item1") {
    //
    }
    }
    };
    JMenuItem item1 = new JMenuItem();
    item1.addActionListener(l);
    item1.setActionCommand("item1");
    JMenuItem item2 = new JMenuItem();
    item2.addActionListener(l);
    JMenuItem item3 = new JMenuItem();
    item3.addActionListener(l);