JMenu submenu老鼠听众没有听;动作听众做了 - 为什么?

时间:2014-04-13 19:06:13

标签: java actionlistener mouselistener jmenu jmenuitem

我刚开始使用JMenu。为了方便起见,我决定使用Netbeans表单设计工具,该工具适用于此应用程序中的所有组件。

单击顶级菜单项效果很好。

对于一个菜单项,我创建了一个包含3个项目的子菜单,每个项目都有一个鼠标点击监听器。

以下是3个子菜单之一的相关代码:

  private JMenuItem mnuEditDicAddAllScratch;

  mnuEditDicAddAllScratch = new JMenuItem();


  private void mnuEditDicAddAllScratchMouseClicked(MouseEvent evt) {                                                     

    new WordsToAdd();  // never happened
  } 

    mnuEditDicAddAllScratch.addMouseListener(new MouseAdapter() {

      public void mouseClicked(MouseEvent evt) {

        mnuEditDicAddAllScratchMouseClicked(evt);
      }
    });

    mnuEdit.add(mnuEditDicAddAllScratch);

它没有用。点击忽略。

所以我尝试了一个Action侦听器:

  private void mnuEditDicAddAllScratchActionPerformed(ActionEvent evt) {

    new WordsToAdd();   // WORKED
  }  

mnuEditDicAddAllScratch.addActionListener(new java.awt.event.ActionListener() {

  public void actionPerformed(java.awt.event.ActionEvent evt) {

    mnuEditDicAddAllScratchActionPerformed(evt);
  }
});

它有效。

所以问题是,"为什么没有鼠标点击监听器听?"

此外,"如果我应远离鼠标点击事件,为什么或在什么情况下?"

(而且,先发制人的罢工:我应该远离Netbeans表格设计师。)

2 个答案:

答案 0 :(得分:1)

您应该使用最好的工具来完成手头的工作。这意味着对于JMenuItems和JButtons,您应该使用ActionListeners,而不是MouseListeners(尽管例外)。例如,如果禁用按钮,则希望按钮不起作用,对吧?这适用于ActionListeners,但不适用于MouseListeners。

有关此类内容的最佳信息,请转到来源:Swing Tutorials

答案 1 :(得分:-1)

mnuEditDicAddAllScratch.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent actionEvent) {

         mnuEditDicAddAllScratchActionPerformed();
    }
});