JavaFx如何实现按钮防抖功能
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了JavaFx如何实现按钮防抖功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaFXJavaFX 是一个开源的
千家信息网最后更新 2025年02月01日JavaFx如何实现按钮防抖功能
这篇文章主要介绍了JavaFx如何实现按钮防抖功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
JavaFX
JavaFX 是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。
javafx中文网站
Android平台的APP,一般是有需要进行设置按钮的防抖(即在短时间内无法多次点击),我想在JavaFx项目中也是实现防抖功能,便是研究了下
实现原理
点击按钮前,需要记录当前点击的时间,在按钮下一次点击的时候,与之前记录的点击时间进行计算,判断两者的间隔时间是否大于设定的条件值
这里思路没有是嘛难度,主要是点击时间的历史记录该如何记录?有以下几种方法
使用Map存储(按钮过多占用资源较大)
使用控件对象提供的某个无用字段进行存储
在Android中,可以使用View中的tag来保存信息
而在JavaFx中,所有的控件都有userData的字段,有了这个,我们即可去存储时间
实现代码
Kotlin版:
kotlin版我是使用了扩展方法,对BUtton类进行了扩展,不太明白扩展方法的可以查下资料,简单来说即是给Button类新增了个方法
//注意Button是javafx包的fun Button.isFastClick(): Boolean { val lastClickTime = userData as Long? val currentTime = System.currentTimeMillis() userData = currentTime //这里我设置为1s内多次点击无效,可以根据需要调整 if (lastClickTime != null && currentTime - lastClickTime <= 1000) { return true } return false}
使用:
button{ action { //不是快速点击才进入点击逻辑 if (!isFastClick()) { println("hello") } }}
Kotlin优化版
稍微重新封装了下,使用更加优雅
/** * 是否快速点击 */fun Button.isFastClick(time:Long): Boolean { val lastClickTime = userData as Long? val currentTime = System.currentTimeMillis() userData = currentTime if (lastClickTime != null && currentTime - lastClickTime <= time) { return true } return false}/** * 设置防抖的按钮Action * @param time 单位毫秒,默认1000(1s内防抖) */fun Button.setActionHank(time:Long = 1000,op: () -> Unit) { action { if (!isFastClick(time)) { op() } }}
使用:
button("测试") { //这里不用action了 setActionHank{ println("111") }}
PS:后续会收录到common-controls的库中
Java版
class ButtonUtils { public static boolean isFastClick(Button button) { Object userData = button.getUserData(); long currentTime = System.currentTimeMillis(); button.setUserData(currentTime); if (userData instanceof Long) { Long lastClickTime = (Long) userData; return currentTime - lastClickTime <= 1000; } return false; }}
测试效果
感谢你能够认真阅读完这篇文章,希望小编分享的"JavaFx如何实现按钮防抖功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
按钮
时间
功能
方法
篇文章
存储
字段
客户
客户端
平台
控件
应用
测试
较大
齐全
优雅
下一代
不用
中文网站
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
四川省网络安全攻防实战演练
土地调查新技术试点数据库
数据库怎么采集应用日志
软件开发产品的需求方案
外码 数据库
激光干涉仪软件开发
软件开发与测试年薪
数据库系统三级模式结构优缺点
法庭网络安全主题党日活动
明年网络安全风险点
医学中心数据库
qq加群太多服务器维护
c 三层架构批量删除数据库
数据库最重要的性质
台湾的论文数据库
江苏网络技术服务要多少钱
青岛数控软件开发招聘
前用什么词网络安全
软件企业购买服务器几年计提折旧
aix 数据库cpu
网络安全宣传活动拍手歌
湖北pdu服务器电源排名
僵尸毁灭工程重启服务器终止
找软件开发的网站
幼儿园网络安全应急处置流程
DNS服务器在哪查
服务器网络限制
数据库的4
web如何用sql添加数据库
web网络安全日志分析