1

双击被捕获为单击:(

在 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");
        }
    }
}

不幸的是,我发现双击没有被捕获 - 只有单击。在调试器中,点击次数为 1。

更新: 由于我无法弄清楚为什么它在 JavaFX 2.2.3-b05 上对我不起作用,所以我做了一个解决方法并消除了双击的需要。我在 UI 中添加了一个“加载”按钮。现在用户必须单击并按下加载按钮。

4

1 回答 1

2

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

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

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

例如,如果您运行下面的代码并双击按钮输出将是:

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(); }
}
于 2013-01-16T00:38:57.163 回答