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

时间:2012-10-10 10:08:50

标签: 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();
    }
});

在持有LMB的同时我已经f1()正在运行,但是当我推送RMB时,似乎新事件完全覆盖了前一个:只有f2()运行。

我如何分开这两个事件?

1 个答案:

答案 0 :(得分: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");
        }
    }
});