如何通过addMouseListener添加鼠标单击menuItem

时间:2011-09-24 17:25:30

标签: java swing events menu-items

考虑使用“关闭应用程序”菜单项关闭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个解决方案,只有第一个解决方案。

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

2 个答案:

答案 0 :(得分:2)

在该示例中,您从未注册KeyListener。无论如何,您只应注册ActionListener。有关详细信息,请参阅Handling Events from Menu Items

另见:

答案 1 :(得分:2)

  

听起来像Java语言的开发人员忘记使用addActionListener从menuItems传播事件。

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