JavaFx如何实现按钮防抖功能
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了JavaFx如何实现按钮防抖功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaFXJavaFX 是一个开源的
千家信息网最后更新 2025年11月12日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安全错误
数据库的锁怎样保障安全
湖南正规网络技术咨询报价
山西正规软件开发服务五星服务
吕梁软件开发参考价
横行天下下载软件开发
mysql数据库端口代码
测试链接数据库项目
苹果服务器怎么卸载
最新连接数据库的方法
软件开发公司有什么要求
软件开发运营部招人
电脑网络技术服务协议
数据库抽取申请表
前台 后台 数据库
dns服务器与管理论文
近代贸易数据库
网络安全是一把双刃剑感想
天龙八部3精通数据库
变换当前数据库
北京前端软件开发哪家专业
国泰安数据库在线求平均值
校园网络安全小剧本
图书馆系统软件开发环境
海南邵赢网络技术有限公司世外田园下载
网络安全绪论知识图谱
数据库技术与应用英语怎么说
软件开发公司英文介绍
网络安全是全球性挑战正确吗
明日之后官方发布服务器的时间
地震活动断层数据库建设项目中标
中国网络安全基地