我的代码类似于以下内容:
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年,每天有数千名用户,这是此错误首次出现在崩溃报告中。
答案 0 :(得分:2)
Java6 and newer version
仅支持带有三个按钮的鼠标(Hardware
),鼠标有5个按钮(两侧,但从不尝试或使用它)
MouseEvent
s(也来自keyboard
)使用[{1}}为JButtons JComponents
实现的方法
JButton
(可能对所有JButtons JComponents
无效)已在API中正确实施Mouse event
,没有理由通过添加MouseListener
将这些事件相乘,也许在那里是附件Listeners
我认为NO_BUTTON
可以返回AbstractButton
,不知道没有SSCCE
请This happened on Java 1.5.0_30 on Mac OS X 10.5.8.