java - 如何检测 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;
}
}
});
解决方案
您需要使用外部计时器或 javafx.animation.Timeline 来执行此操作。如果您要更改 UI,请使用时间轴。
设置诸如lastScrollSeen
日期时间之类的标志,并在您第一次获得滚动事件时触发该计时器。每次收到另一个滚动事件时更新lastScrollSeen
,并定期(使用计时器/时间线)查看是否有足够的时间过去而没有额外的滚动事件,让您感到用户已经完成滚动。
那时,请执行您的工作以禁用触发器并清除标志和计时器。
推荐阅读
- python - PyQt 相机需要很长时间才能显示 OpenCV
- typescript - 将一个枚举的键引用到另一个枚举的键或值
- javascript - 使用 vue 向上滑动过渡
- c# - protobuf-net 从基类中跳过一个成员(接口类型)
- reactjs - 向功能组件中的列表添加值
- c - 以涉及 fread 的条件退出程序
- powerbi - 使用桌面 pibx 文件检索发布到服务的 Power BI 数据集
- excel - 将图表导出到 ppt 时 VBA 运行时错误 91
- python - 熊猫日期时间格式的累积时间字符串
- javascript - 重新加载此页面时如何自动启动计时器?