java - 为什么 MouseEvent.getButton() 会返回 NO_BUTTON?

标签 java swing mouseevent mouselistener

我的代码类似于以下内容:

JComponent component = ...
component.addMouseListener(new MouseAdapter() {
    @Override
    public void mouseClicked(MouseEvent e) {
        final int button = e.getButton();
        System.out.println("button = " + button);
    }
});

我今天收到了一份崩溃报告,是因为 e.getButton() 返回 0,即 NO_BUTTON。可能是什么原因?鼠标怎么能点击没有按钮呢?

这发生在 Mac OS X 10.5.8 上的 Java 1.5.0_30 上。

相关代码已投入生产 4 年,每天有数千名用户,这是此错误第一次出现在崩溃报告中。

最佳答案

  1. Java6 及更新版本 仅支持带三个按钮的鼠标(硬件),还有带 5 个按钮的鼠标(两侧,但从未尝试过或使用它)

  2. 用于MouseEvent(也来自键盘)使用ButtonModel中实现的方法对于 JButtons JComponents

  3. JButton(可能不适用于所有 JButtons JComponent)已在 API 中正确实现了鼠标事件,没有理由乘以这些通过添加 MouseListener 事件,也许存在并发性,或者来自附加的 Listeners

  4. 的无限循环
  5. 我认为 NO_BUTTON 可以返回 AbstractButton,不知道没有 SSCCE

  6. 请问还有其他原因吗这发生在 Mac OS X 10.5.8 上的 Java 1.5.0_30 上。

关于java - 为什么 MouseEvent.getButton() 会返回 NO_BUTTON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477151/

相关文章:

java - 在 swt 复合单击上获取鼠标右键坐标

java - 在 Java 中执行 shell 命令行

java - 尝试使用 Spring Security 自定义失败登录

java - 如何根据用户输入运行某些进程,然后相应地销毁它们?

Java Swing GUI 更新/从方法更改 - 循环卡住

java - 自定义设计 JScollPane Java Swing

Java SwingWorker 不能在 main 方法中工作?

java - 如何在 Vaadin 中映射表项

javafx - 旋转形状 JAVAFX

java - 在鼠标按下事件中启动 "asyncExec"会导致阻塞行为