Javafx 2 OnMouseEvent(JavaFX2)未捕获双击

Javafx 2 OnMouseEvent(JavaFX2)未捕获双击,javafx-2,Javafx 2,双击被捕获为单击一次:( 在fxml文件中: <Button fx:id="A_button" onMouseClicked="#buttonAClicked"> 不幸的是,我发现双击并没有被捕捉到——只有单次点击。 在调试器中,单击“计数为1” 更新: 因为我不明白为什么它在JavaFX2.2.3-b05上对我不起作用,所以我做了一个变通方法,不再需要双击。我在UI中添加了一个“加载”按钮。现在用户必须单击并按下加载按钮。它在JavaFX2.2中得到了修复,请参阅 请注意,双击会

双击被捕获为单击一次:(

在fxml文件中:

<Button fx:id="A_button" onMouseClicked="#buttonAClicked">
不幸的是,我发现双击并没有被捕捉到——只有单次点击。 在调试器中,单击“计数为1”

更新:
因为我不明白为什么它在JavaFX2.2.3-b05上对我不起作用,所以我做了一个变通方法,不再需要双击。我在UI中添加了一个“加载”按钮。现在用户必须单击并按下加载按钮。

它在JavaFX2.2中得到了修复,请参阅

请注意,双击会收到两个事件:

  • 使用getClickCount()=1单击鼠标
  • 使用getClickCount()进行鼠标单击=2
例如,如果您运行下面的代码并双击按钮,则输出将为:

clicks: 1
clicks: 2
代码(按2.2.4测试):

public类双击扩展应用程序{
@覆盖公共无效开始(阶段){
按钮btn=新按钮();
setOnMouseClicked(新的EventHandler(){
@凌驾
公共无效句柄(MouseeEvent事件){
System.out.println(“clicks:+event.getClickCount());
}
});
舞台场景(新场景(新组(btn),300250);
stage.setTitle(VersionInfo.getRuntimeVersion());
stage.show();
}
公共静态void main(字符串[]args){launch();}
}

我双击按钮,然后在mousehandler断点中检查MouseEvent。它有一个变量click count,其值为1。我在调试器中只得到一个事件-但让我再试一次,看看是否得到另一个事件。cI测试了您的信息,但发现我只得到一个事件。我没有将其置于调试模式,just在IDE中运行它并作为输出:
单击一个_按钮
。没有其他语句。Sergey。如果用户希望在同一节点上单击和双击执行不同的作业,该怎么办?当前,用户无法在类似于上述的代码中仅选择双击。@Anil:我已用代码示例更新了答案。请进行比较你的代码和外汇version@UlukBiy在双击超时时间过去之前,系统无法确定单击是单次单击还是双击。在设置中,可以将超时时间设置为10秒。您确实不想让用户在每次单击后等待数秒,然后程序才会响应。因此,您需要设计事件反应记住h 2事件。例如,Windows资源管理器单击选择文件,双击选择并打开文件,因此对用户来说没有问题。我已在2.2.0-b21中测试了您的代码,它按预期工作。单击和双击都会触发。对于我来说:VersionInfo.getRuntimeVersion();2.2.3-b05
clicks: 1
clicks: 2
public class DoubleClicks extends Application {
    @Override public void start(Stage stage) {
        Button btn = new Button();
        btn.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("clicks: " + event.getClickCount());
            }
        });

        stage.setScene(new Scene(new Group(btn), 300, 250));
        stage.setTitle(VersionInfo.getRuntimeVersion());
        stage.show();
    }

    public static void main(String[] args) { launch(); }
}