JavaのMouseEventsがキーとマウスボタンの間のモディファイアを共有するのはなぜですか?あなたはウィンドウ内の3回(1回の左クリック、1回の中間クリックし、1の右クリック)をクリックした場合は、次のような出力が表示されますJavaのすべてのミドルクリックがAlt修飾子を持つと報告されるのはなぜですか?
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setSize(800,600);
frame.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println(e);
}
});
frame.setVisible(true);
}
:
は、以下の簡単なコードを考えてみましょう。あなたが見れば
java.awt.event.MouseEvent[MOUSE_CLICKED,(165,149),absolute(165,149),button=1,modifiers=Button1,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(292,228),absolute(292,228),button=2,modifiers=Alt+Button2,clickCount=1] on frame0
java.awt.event.MouseEvent[MOUSE_CLICKED,(293,228),absolute(293,228),button=3,modifiers=Meta+Button3,clickCount=1] on frame0
は、あなたはすべてのミドルクリックがダウンAltキーを持つと報告されており、すべての権利クリックがダウンMetaキーを持つと報告されていることがわかります。これは十分に文書化されており、このオーバーラップについて言及しているJavadocs for MouseEventの行もあります。しかし、私の質問は、なぜこのように報告されているのですか?中間クリックのe.isAltDown()から真を返す理由は何ですか?
これにより、一部のプラットフォームでAlt + Button1とButton2を区別することが困難になります。
同様に、Javaでのクロスプラットフォームマウスの動作を設計するための「ベストプラクティス」ガイドはありますか?
Mac。または、ワンボタンマウスを使用する可能性のある他のシステム。 – GSP