java - 通过 addMouseListener 添加时如何检测鼠标点击 menuItem

标签 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 个解决方案,只有第一个会触发。

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

最佳答案

Sounds like the developers of Java languare forget to propagate events from menuItems using addActionListener.

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

关于java - 通过 addMouseListener 添加时如何检测鼠标点击 menuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540626/

相关文章:

c# - 如何强制使用订阅方法的事件

javascript - 合并 OnMouseUp/Down 功能?

java - 为什么我在退出 Activity 时会发生崩溃?

java - 什么时候在 stringbuilder/stringbuffer 上使用 string?

java - 理解 joda 时间 PeriodFormatter

java - 使用参数创建新线程 - 线程已创建但不显示数据

java - JScrollPane 打开到面板底部

javascript – 在移动 textarea 插入符号时执行

Java 对象和类 - 我的代码有问题吗?

swing - JTree 动态节点插入