JavaFx如何实现按钮防抖功能
发表于:2024-09-28 作者:千家信息网编辑
千家信息网最后更新 2024年09月28日,这篇文章主要介绍了JavaFx如何实现按钮防抖功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaFXJavaFX 是一个开源的
千家信息网最后更新 2024年09月28日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安全错误
数据库的锁怎样保障安全
华为服务器操作系统识别不到网卡
网络安全进入社区宣传
杨浦区互联网软件开发厂家批发价
计算机网络技术用电脑
2020年徐州网络安全知识
轻量简单im服务器架构
下载ios15.4服务器出错
奥的斯用服务器查故障
数据库查询数量在10到20之间
dns服务器是电脑自带的吗
数据库设计黑马程序员课后答案
奉贤区服务器精密空调公司
a3网络安全
联通公司软件开发中心
数据库向列表框组合框添加数据
互联网科技赋能城市发展
网络安全和高数关系大吗
网络安全解决木马病毒
通州网络安全园位置
艾默生服务器机柜
网络安全法总共有多少字
常用的软件开发语言
数据库数据类型最大字符
php 抢票软件开发
一个数据库只能包含一张表吗
德温特数据库保留时间
美国ntp服务器地址
神兔网络安全吗
核网络安全事件伊朗
海南鲲鹏服务器厂家供应