0

フレームにいくつかのコンポーネントがあり、右ボタンのクリックだけで応答する必要があります。私は自分のイベントを使用する必要があります。延長する必要がありMouseEventますか?イベントで右ボタンのクリックを他のものと区別するにはどうすればよいですか?

4

2 に答える 2

6

いいえ、MouseEvent を拡張するのではなく、MouseEvent を使用します。

これが Swing GUI の場合、MouseListener をコンポーネントに追加してから、MouseListener の mousePressed メソッドで、メソッドに渡される MouseEvent オブジェクトを取得し、modifiersEx を取得して、右クリックが押されたかどうかを確認します。

public void mousePressed(MouseEvent mEvt) {
   if ((mEvt.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) != 0) {
      // right button has been pressed
   }
}
于 2012-11-02T23:53:46.640 に答える
5

このMouseEventクラスには、どのマウス ボタンが使用されたかを確認できるメソッドがあります。これはgetButtonと呼ばれ、定義済みの値intの 1 つと比較できる値を返します。

その上に、 という便利なクラスがありSwingUtilities、これらのフィールドの使用に対して優れた抽象化レイヤーを提供します。特に興味深い方法を次に示します。isRightMouseButton

つまり、独自の を作成する必要はなくMouseEventMouseListener実装で十分です。これはインライン実装の例で、無関係な詳細は除外されています。

new MouseListener(){

        @Override
        public void mouseClicked(MouseEvent e) {
            if(SwingUtilities.isRightMouseButton(e)){
                //do what you want on right click
            }
        }
        // other methods required by the interface

    };
于 2012-11-02T23:53:56.593 に答える