mouseevent - 如何正确检测 JavaFX 中哪些鼠标按钮已按下

标签 mouseevent javafx-2

我已经为我的 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/

相关文章:

java - 如何仅从 Javafx2 HTMLEditor 获取文本

java - 在 javafx 应用程序中单击对话框按钮时内存增加

c# - MouseButtonEventArgs.MouseDevice.DirectlyOver 误解

java - 识别 "click-point"和 JfreeChart 图中单击的子图时出现问题

c - 全局使用WH_MOUSE,无需DLL

Javafx如何模拟Tab上的右键单击事件

java - 将鼠标事件从 JList 转发到列表中的项目

javascript - 鼠标事件处理程序内的 'this' 值

JavaFX - 屏幕关闭时的绘图组件

service - 如何从服务更新一组 JavaFX2.2 TextFields?