【问题标题】:MouseEvent handler. delayed in stationary鼠标事件处理程序。静止不动
【发布时间】:2016-11-22 11:03:59
【问题描述】:

我需要知道 - 鼠标在静止的组件上延迟了多长时间。我的意思是它在一个节点上完全静止了多长时间。我没有找到标准方法。谢谢。

【问题讨论】:

  • 你的意思是鼠标在一个节点上停留了多长时间?或者它在一个节点上完全静止了多长时间?您在什么时候需要这些信息?点击鼠标时?
  • 我的意思是它在一个节点上完全静止了多长时间。

标签: java javafx


【解决方案1】:

只需使用onMouseMoved 处理程序即可;您只需要节省时间并计算差异即可:

@Override
public void start(Stage primaryStage) {
    StackPane root = new StackPane();

    root.setOnMouseMoved(new EventHandler<MouseEvent>() {

        long lastTriggered = System.currentTimeMillis();

        @Override
        public void handle(MouseEvent event) {
            long t = System.currentTimeMillis();
            System.out.println("last moved " + (t - lastTriggered) + "ms ago");
            lastTriggered = t;
        }
    });

    Scene scene = new Scene(root, 400, 400);

    primaryStage.setScene(scene);
    primaryStage.show();
}

除此之外,您可能还想监听包含节点被关闭/图标化的阶段...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2016-08-13
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多