我已经为我的 Pane
设置了一个监听器以便它会检测鼠标左右按钮是否按下。
但是当我按住鼠标左键,然后按右键时,之前的 Action 似乎失去了作用!
我的代码:
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()
运行,但当我推人民币时,新事件似乎完全覆盖了之前的事件:只有 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/