【问题标题】:JMenu submenu mouse listener didn't listen; action listener did--why?JMenu 子菜单鼠标监听器没有监听;动作监听器做了——为什么?
【发布时间】:2014-05-27 15:31:29
【问题描述】:

我刚开始使用 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 表单设计器。)

【问题讨论】:

    标签: java actionlistener mouselistener jmenu jmenuitem


    【解决方案1】:

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

    有关此类内容的最佳信息,请访问来源:Swing Tutorials。

    【讨论】:

    • 谢谢你,鳗鱼,特别是解释、附加信息和链接。 (你还记得当我认为你的手柄是“飞机上的蛇”的起飞吗?[不是一个巨大的飞跃]而不是 Python 参考?我想知道我是否没有注意到你的头像,或者我只是没有制作连接。好时光……好时光……)
    • @DSlomer64:是的,我记得。回到过去。
    【解决方案2】:
    mnuEditDicAddAllScratch.addActionListener(new ActionListener() {
    
        public void actionPerformed(ActionEvent actionEvent) {
    
             mnuEditDicAddAllScratchActionPerformed();
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2015-11-30
      • 2014-12-13
      • 2014-02-21
      • 2021-07-02
      • 2013-07-20
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多