1

java.awt.event.MouseEventマウス ボタンと修飾キーを試しました。最後に、その動作に混乱するところまで来ました。

通常SwingUtilities.isLeftMouseButton(...)、どのマウスボタンが押されたかを検出するために etcを使用<MouseEvent>.isControlDown()し、どの修飾キーが押されたかを検出するために etc を使用します。

しかし、マウスの中ボタンを押すと<MouseEvent>.isAltDown()、Alt キーが押されているかどうかに関係なく、-method は常に true のように見えます (マウスの右ボタンとメタ キーでも同じです)。

キーボードの一部のキーは、一部のマウス ボタンと同じイベント フラグを共有しているようです。 Javaで中マウスボタンを取得するには? 私の仮定を確認するようです。

私の質問:どのマウスボタンが押され、どの修飾子が実際に押されたかを検出する方法はありますか? それとも、条件付きマウス イベントには Ctrl キーと Shift キーのみを使用する方がよいでしょうか?

OS:Windows8、Javaバージョン「1.7.0_09」

前もって感謝します

4

1 に答える 1

1

マウスの中ボタンに関する問題に関して... http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6495530、Sun/Oracle は 2006 年以来この問題について認識していたようです...

他のケース (少なくとも単純なもの) では、次のようにします。

@Override
public void mouseClicked(MouseEvent e) {
     if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON2){
         //Do some stuff...
         if (e.isControlDown()) {
             //Do something if control is down
         }else{
             //Something different if it is not down.
         }
     }
}

alt (中ボタンでは機能せず、常に true)、shift、および meta (OS X キーですか?) にも同様のヘルパーがあります。

Javaはダブルクリックを尊重しているように見えますが、シングルクリックも処理するため、ダブルクリックとシングルクリックを別々に処理したい場合、奇妙な動作に気付きました。

于 2013-11-28T18:17:25.033 に答える