Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMenu子菜单鼠标侦听器未侦听;听众的行动——为什么?_Java_Actionlistener_Mouselistener_Jmenu_Jmenuitem - Fatal编程技术网

Java JMenu子菜单鼠标侦听器未侦听;听众的行动——为什么?

Java JMenu子菜单鼠标侦听器未侦听;听众的行动——为什么?,java,actionlistener,mouselistener,jmenu,jmenuitem,Java,Actionlistener,Mouselistener,Jmenu,Jmenuitem,我刚开始使用JMenu。为了便于使用,我决定使用Netbeans表单设计工具,该工具对该应用程序中的所有组件都非常有效 单击顶级菜单项效果很好 对于一个菜单项,我制作了一个包含3个项的子菜单,每个项都有一个鼠标单击侦听器 以下是3个子菜单之一的相关代码: private JMenuItem mnuEditDicAddAllScratch; mnuEditDicAddAllScratch = new JMenuItem(); private void mnuEditDicAddA

我刚开始使用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);
它不起作用。点击被忽略

所以我尝试了一个动作监听器:

  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表单设计器。

您应该为手头的工作使用最好的工具。这意味着对于JMenuItems和jbutton,您应该使用ActionListeners,而不是MouseListeners。例如,如果你禁用一个按钮,你希望按钮不工作,对吗?这适用于ActionListener,但不适用于MouseListener


有关这类材料的最佳信息,请访问来源:。

谢谢你,Eels,特别是关于解释、附加信息和链接。你还记得我以为你的把手是飞机上的蛇吗?[不是一个巨大的飞跃]而不是Python引用?我想知道我是否没有注意到你的头像,或者我只是没有建立连接。好时光。。。好时光…@DSlomer64:是的,我记得。那是在白天。
mnuEditDicAddAllScratch.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent actionEvent) {

         mnuEditDicAddAllScratchActionPerformed();
    }
});