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 version3 つのボタンを持つマウス ( ) のみをサポートするためにHardware、5 つのボタンを持つマウスがあります (両側にありますが、試したことも使用したこともありません)。

  2. for MouseEvents (からkeyboardも) ButtonModelに実装されたメソッドを使用するJButtons JComponents

  3. JButton(すべての に対して有効ではない可能性がありますJButtons JComponents) が API に正しく実装さMouse eventれています。これらのイベントを addMouseListenerで乗算する理由はありません。同時実行性があるか、接続されたループが終了している可能性があります。Listeners

  4. NO_BUTTON返品できると思いますAbstractButtonSSCCE

  5. 他に何かありますかThis happened on Java 1.5.0_30 on Mac OS X 10.5.8.

于 2012-09-18T12:57:41.453 に答える