我有类似于以下代码:

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 and newer version仅支持具有三个按钮的鼠标(Hardware),有具有5个按钮的鼠标(两侧,但从不尝试或使用该按钮)
(也来自MouseEvent)使用keyboard中实现的方法
JButtons JComponents(可能并非对所有JButton都有效)已在API中正确实现了JButtons JComponents,没有理由将这些事件与添加Mouse event相乘,也许有并发性,或者来自附加的MouseListener的endles循环
我认为Listeners可以返回NO_BUTTON,没有AbstractButton也不知道
请为SSCCE还有其他内容

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

10-12 06:26