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

时间:2012-09-18 12:36:25

标签: 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 个答案:

答案 0 :(得分:2)

  1. Java6 and newer version仅支持带有三个按钮的鼠标(Hardware),鼠标有5个按钮(两侧,但从不尝试或使用它)

  2. {li>

    MouseEvent s(也来自keyboard)使用[{1}}为JButtons JComponents实现的方法

  3. JButton(可能对所有JButtons JComponents无效)已在API中正确实施Mouse event,没有理由通过添加MouseListener将这些事件相乘,也许在那里是附件Listeners

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

  6. This happened on Java 1.5.0_30 on Mac OS X 10.5.8.