原文地址: JavaFx实现倒计时按钮组件(类似发送激活码) – Stars-One的杂货小窝
本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本
然后也是顺便把这个封装成了stars-one/common-controls
里的xCountDownBtn
效果
思路
点击按钮的时候,将当前按钮设置为禁用状态,之后开启一个线程去倒计时,间隔1s修改一下按钮的文本文字,当倒计时结束的时候,将按钮从禁用状态改为正常状态即可
在JavaFx中,由于提供了对应的观察者模式,按钮的文本和禁用状态都是与某个数据绑定,之后修改这个数据即可实现修改文本和状态的功能,还是挺方便的
下面的是简单的源代码
代码
//倒计时的按钮提示val tip = "发送验证码"val codeTip = SimpleStringProperty(tip)val time = SimpleIntegerProperty(0)jfxbutton(codeTip) { disableWhen { time.greaterThan(0) } time.addListener { _, _, newValue -> runLater { if (newValue == 0) { codeTip.value = tip } else { codeTip.value = "$tip $newValue" } } } action { //todo 你的逻辑.. time.value = 60 runAsync { repeat(60) { runLater { time.value = time.value - 1 } Thread.sleep(1000) } } }}
提问之前,请先看提问须知点击右侧图标发起提问或者加入QQ群一起学习TornadoFx学习交流群:1071184701<!––>