MouseEvent(JavaFX 2)未捕获双击

时间:2013-01-15 23:41:03

标签: javafx-2

单击即可获得双击:(

在fxml文件中:

<Button fx:id="A_button" onMouseClicked="#buttonAClicked">

在控制器中

private void buttonAClicked(MouseEvent mouseEvent) {
    if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) {
        if (mouseEvent.getClickCount() == 2) {
            System.out.println("Double clicked A_button");
        }
        if (mouseEvent.getClickCount() == 1) {
            System.out.println("Single clicked A_button");
        }
    }
}

不幸的是,我发现没有抓住双击 - 只有单击。 在调试器中,单击count为1.

更新 由于我无法弄清楚为什么它在JavaFX 2.2.3-b05上不适合我,我做了一个解决方法并且不再需要双击。我在UI中添加了一个“加载”按钮。现在用户必须单击并按下加载按钮。

1 个答案:

答案 0 :(得分:2)

已在JavaFX 2.2中修复,请参阅http://javafx-jira.kenai.com/browse/RT-19346

注意,双击时您将收到两个事件:

  • 鼠标点击getClickCount()== 1
  • 鼠标点击getClickCount()== 2

E.g。如果您运行下面的代码并双击按钮输出将是:

clicks: 1
clicks: 2

代码(使用2.2.4测试):

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(); }
}