我的代码类似于以下内容:
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 年,每天有数千名用户,这是此错误第一次出现在崩溃报告中。
最佳答案
Java6 及更新版本
仅支持带三个按钮的鼠标(硬件
),还有带 5 个按钮的鼠标(两侧,但从未尝试过或使用它)用于
MouseEvent
(也来自键盘
)使用ButtonModel中实现的方法对于JButtons JComponents
JButton
(可能不适用于所有JButtons JComponent
)已在 API 中正确实现了鼠标事件
,没有理由乘以这些通过添加MouseListener
事件,也许存在并发性,或者来自附加的Listeners
的无限循环
我认为
NO_BUTTON
可以返回AbstractButton
,不知道没有SSCCE
请问还有其他原因吗
这发生在 Mac OS X 10.5.8 上的 Java 1.5.0_30 上。
关于java - 为什么 MouseEvent.getButton() 会返回 NO_BUTTON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477151/