Double click is not being caught by OnMouseEvent (JavaFX2)
双击被捕获为单击:(
在FXML文件中:
1 | <Button fx:id="A_button" onMouseClicked="#buttonAClicked"> |
在控制器中
1 2 3 4 5 6 7 8 9 10 | 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。
更新:因为我不明白为什么它在JavaFX2.2.3-B05上不适合我,所以我做了一个变通方案,消除了双击的必要性。我在用户界面中添加了一个"加载"按钮。现在,用户必须单击并按下加载按钮。
它在javafx 2.2中被修复,请参见http://javafx-jira.kenai.com/browse/rt-19346
注意,双击将收到两个事件:
- 使用getclickcount()=1单击鼠标
- 使用getclickCount()=2单击鼠标
例如,如果运行下面的代码并双击按钮,输出将是:
1 2 | clicks: 1 clicks: 2 |
代码(用2.2.4测试):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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(); } } |