【问题标题】:How to implement zoom on double Click in javafx? [duplicate]如何在javafx中实现双击缩放? [复制]
【发布时间】:2016-05-22 03:54:44
【问题描述】:

如何实现dbl点击javafx?

我有一个场景(有很多组件),我想让它能够拖动以及双击放大。我怎样才能实现这种动态行为? 我已经使用了给定的解决方案,但它们没有帮助 当我拖动两次时,双击事件触发。我不想要的。

一些示例代码将不胜感激。

【问题讨论】:

  • @Adam 问题是鼠标释放事件在这两种情况下都会被调用。那么如何在发布中识别是双击发布还是单击发布。
  • 在检查双击之前,您是否尝试过检查鼠标事件是否为 DRAG_DETECTED 事件?
  • @Miles 它似乎可以工作,一旦完成,我将使用最终代码进行更新。
  • @Miles 你节省了我的时间。谢谢。
  • @AdamKortylewicz 如何复制。只是因为它包含 dbl click。

标签: java javafx draggable double-click scene


【解决方案1】:

您可以在单击拖动开始之前添加等待时间。

  • 指定是否发生双击的布尔值

  • 拖放时:将布尔值设置为 false

  • 拖放时:在检查布尔值之前等待指定的毫秒数
  • 拖放时:检查布尔值是否为假 -> 继续

  • 双击:设置布尔真

应该可以吗?

编辑:拖放时:在检查布尔值之前等待指定的毫秒 - 这基本上是您定义为双击仍然是双击而不是两次单独单击的延迟

Edit2:在这种情况下,迈尔对该问题的评论似乎是一种更好的方法。

【讨论】:

  • 你的答案接近实现我想要的,但不完全。最好的部分是根据拖动、单击和两次单击之间的时间跨度(如果未拖动)来检测和管理鼠标释放事件。
【解决方案2】:

试试这个代码双击。

  myPane.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent mouseEvent) {
            if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){
                if(mouseEvent.getClickCount() == 2){
                    //Write zooming logic here.
                }
            }
        }
    });

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2021-12-20
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多