我已经为我的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()
运行。
我如何分开这两个事件?
答案 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");
}
}
});