我为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()
。如何区分这两个事件?
最佳答案
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");
}
}
});
关于mouseevent - 如何正确检测JavaFX中哪些鼠标按钮按下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12816847/