如何在javafx中实现双击缩放? [复制]

Posted

技术标签:

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

如何实现dbl点击javafx?

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

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

【问题讨论】:

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

希望对你有帮助。

【讨论】:

以上是关于如何在javafx中实现双击缩放? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中实现图像视图的缩放效果?

OpenGL中实现双缓冲技术

iPhone,MPMoviePlayerController双击屏幕时如何禁用缩放?

如何在uiscrollview中双击缩放和两个手指缩放uiimage

缩放并旋转JavaFX画布的某个区域

检测 TableView JavaFX 行上的双击