2

考虑您想使用“关闭应用程序”菜单项关闭您的 Java 应用程序。

3 种可能的解决方案是(使用 ActionListener 或 MouseAdapter 或 MouseListener):

menuItemClose.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        System.exit(0);
    }
});

menuItemClose.addMouseListener(new MouseAdapter() {

    @Override
    public void mouseClicked(MouseEvent e) {
        System.exit(0);
    }
});

menuItemClose.addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        // TODO Auto-generated method stub
        System.exit(0);
    }
});

3个解决方案,只有第一个会着火。

对此有何解释?其他一些组件是否具有相同的行为?在这种情况下如何正确处理事件?

4

2 回答 2

2

在该示例中,您永远不会注册KeyListener. 无论如何,您应该只注册一个ActionListener. 有关更多信息,请参阅处理来自菜单项的事件

也可以看看:

于 2011-09-24T17:30:16.323 回答
2

听起来 Java 语言的开发人员忘记使用addActionListener.

不,开发人员建议您使用Action“将功能和状态与组件分开”。

于 2011-09-24T21:04:56.897 回答