私は実験した java.awt.event.MouseEvent
マウスボタンと修飾キー。ついに私はその振る舞いに混乱したところまで来ました。
通常私は使います SwingUtilities.isLeftMouseButton(...)
どのマウスボタンが押されたかを検出するなど <MouseEvent>.isControlDown()
どの修飾キーが押されたかを検出するためなど。
しかし、中マウスボタンを押すと、 <MouseEvent>.isAltDown()
Altキーが押されているかどうかにかかわらず、-methodは常に正しいようです(マウスの右ボタンとメタキーの場合も同様)。
キーボードのいくつかのキーは、いくつかのマウスボタンと同じイベントフラグを共有しているようです。 Javaでマウスの中ボタンを取得する方法 私の仮定を確認するようです。
だから私の質問:どのマウスボタンが押されていて、どの修飾子が実際に押されているかを検出する方法はありますか?それとも、条件付きマウスイベントにはCtrlキーとShiftキーを使用する方が良いでしょうか。
OS:Windows 8、Javaバージョン "1.7.0_09"
前もって感謝します
回答:
回答№1は0中マウスボタンであなたの問題に関しては... http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=64955302006年以来、Sun / Oracleはこの問題について知っているようです。
それ以外の場合(少なくとも単純なもの)は、次のようにします。
@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(これは真中のボタンでは動作しません、常に真です)、shiftそしてmeta(OS Xキーなのですか?)のための同様のヘルパーがあります。
ダブルクリックとシングルクリックを別々に処理したいのであれば奇妙な振る舞いをしました。Javaはダブルクリックを尊重するようですが、シングルクリックも処理します。