JMenu也是从JMenuItem继承,直接addActionListener试试?

解决方案 »

  1.   

    可否试试在界面加到JMenuBar之后,先去掉原来MenuBar所添加的默认的actionListener,然后再添加自己的Listener?类似于:
    menubar.add(settingsMenu);
    ActionListener[] als = settingsMenu.getActionListeners();
    for(int i = 0; i < als.length; i++)
        settingsMenu.removeActionListener(als[i]);
    settingsMenu.addActionListener(new MyActionListener());没试过,不知道行不行。
      

  2.   

    我这边用的是eclipse的visual editor目前的代码:
    if (jJMenuBar == null) {
    jJMenuBar = new JMenuBar();


    JMenu aa = getJMenu_XTCZ(); 
    jJMenuBar.add(aa);
    ActionListener[] als = aa.getActionListeners();
    for(int i = 0; i < als.length; i++)
        aa.removeActionListener(als[i]);
    aa.addActionListener(new java.awt.event.ActionListener() { 
    public void actionPerformed(java.awt.event.ActionEvent e) {    
    output.append("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()
    }
    });
    }这是我的想法 JMenu aa = getJMenu_XTCZ(); 
    jJMenuBar.add(aa);  // getJMenu_XTCZ()); aa.addMouseListener(new java.awt.event.MouseAdapter() { 
    public void mouseClicked(java.awt.event.MouseEvent e) {    
    JMenu source = (JMenu)e.getSource();
    output.append(source.getText()); // output是textarea
    source.doClick();  // 本想以这样的方式结束菜单的选择操作,但是不起作用
    }
    });
      

  3.   

    JMenu aa = getJMenu_XTCZ(); 
    jJMenuBar.add(aa);  // getJMenu_XTCZ()); aa.addMouseListener(new java.awt.event.MouseAdapter() { 
    public void mouseClicked(java.awt.event.MouseEvent e) {    
    JMenu source = (JMenu)e.getSource();
    output.append(source.getText()); // output是textarea
    source.dispatchEvent((AWTEvent)e);  // 还想以这样的方式操作,但是出错
    }
    });