我在WindowBuilder for Eclipse中创建了一个Java应用程序。我建立了一个菜单,并在其中一个菜单项上添加了mouseclicked事件。

JMenuItem mitemAbout = new JMenuItem("About");
    mitemAbout.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent arg0) {
            JOptionPane.showInternalMessageDialog( form, "Message", "title", JOptionPane.PLAIN_MESSAGE);

        }
    });
    mitemHelp.add(mitemAbout);


我在JOptionPane行上放置了一个断点,当我在调试模式下单击菜单项时,它甚至都没有到达断点。
我在这里完全错过了一步吗?

最佳答案

尽管JMenuItem组件提供了addMouseListener方法(继承自java.awt.Component),但MouseEvents仅出于MenuElements自身功能使用而处理,即任何外部MouseEvents均无效。

对于JMenuItem组件,请使用ActionListener而不是MouseListener来监听用户事件:

mitemAbout.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent e) {
      ...
}
});


或使用:

mitemAbout.setAction(myAction);

07-28 06:08