5

我已经为我设置了一个监听器,Pane以便它检测鼠标左键和右键被按下。但是当我按住鼠标左键,然后按右键时,之前的操作似乎失去了它的效果!

我的代码:

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()运行。

我怎样才能把这两个事件分开?

4

1 回答 1

10

getButton()一次只能返回一个值。它是最新按下的按钮。如果您需要检测多个鼠标按下,您需要使用相应的功能:

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 回答