如何正确检测JavaFX中哪些鼠标按钮已关闭

Che*_*lin 5 mouseevent javafx-2

我已经设置了一个监听器,Pane以便它可以检测鼠标左右按钮是否向下.但是当我按住鼠标左键,然后按右键,之前的动作似乎失去了它的效果!

我的代码:

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

拿着LMB我已经f1()跑了,但是当我推RMB时,新事件似乎完全覆盖了前一个:只f2()运行.

我该如何分开这两个事件?

Ser*_*nev 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");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)