5

Paneマウスの左ボタンと右ボタンが押されていることを検出するように、リスナーを my に設定しました。しかし、マウスの左ボタンを押したまま右ボタンを押すと、前のアクションの効果が失われるようです!

私のコード:

root.setOnMouseDragged(new EventHandler<MouseEvent>(){
    @Override
    public void handle(MouseEvent t) {
        if(t.getButton() == MouseButton.PRIMARY) f1();
        if(t.getButton() == MouseButton.SECONDARY) f2();
    }
});

LMB を押しながらf1()実行していますが、RMB を押すと、新しいイベントが前のイベントを完全に上書きするように見えます:f2()実行のみです。

この 2 つのイベントをどのように分離できますか?

4

1 に答える 1

10

getButton()一度に返すことができる値は1つだけです。そして、それは最新の押されたボタンです。複数のマウスが押されていることを検出する必要がある場合は、対応する機能を使用する必要があります。

root.setOnMouseDragged(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent t) {
        if (t.isPrimaryButtonDown()) {
            System.out.println("rockets armed");
        }
        if (t.isSecondaryButtonDown()) {
            System.out.println("autoaim engaged");
        }
    }
});
于 2012-10-10T10:57:16.410 に答える