2

我有类似于以下的代码:

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 年,每天有数千名用户,这是该错误第一次出现在崩溃报告中。

4

1 回答 1

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

  2. for MouseEvents (from keyboardtoo) 使用在ButtonModel中实现的方法JButtons JComponents

  3. JButton(可能并非对所有人都有效JButtons JComponents)已Mouse event在 API 中正确实现,没有理由将这些事件乘以 add MouseListener,可能存在并发性,或者从附加的 endles 循环Listeners

  4. 我认为NO_BUTTON可以返回AbstractButton,不知道没有SSCCE

  5. 请问还有别的吗This happened on Java 1.5.0_30 on Mac OS X 10.5.8.

于 2012-09-18T12:57:41.453 回答