首页 > 解决方案 > 如何检测 ScrollPane 何时完成滚动

问题描述

我想检测 ScrollPane 何时在我的应用程序中完成滚动,以在移动时禁用某些触发器,而不是帮助使 UI 更干净一些。我找到了它何时移动的触发器,但我找不到触发器或方法来确定它何时停止

scrollPane.vvalueProperty().addListener(new ChangeListener<Number>() {
          @Override
          public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
              if (oldValue!=newValue) {
                  isScrolling = true;
              } else {
                  isScrolling = false;
              }
          }
        }); 

标签: javajavafx

解决方案


您需要使用外部计时器或 javafx.animation.Timeline 来执行此操作。如果您要更改 UI,请使用时间轴。

设置诸如lastScrollSeen日期时间之类的标志,并在您第一次获得滚动事件时触发该计时器。每次收到另一个滚动事件时更新lastScrollSeen,并定期(使用计时器/时间线)查看是否有足够的时间过去而没有额外的滚动事件,让您感到用户已经完成滚动。

那时,请执行您的工作以禁用触发器并清除标志和计时器。


推荐阅读