JavaFx实现倒计时按钮组件(类似发送激活码)

打印 上一主题 下一主题

主题 884|帖子 884|积分 2652

原文地址: JavaFx实现倒计时按钮组件(类似发送激活码) - Stars-One的杂货小窝
本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本
然后也是顺便把这个封装成了stars-one/common-controls
里的xCountDownBtn
效果


思路

点击按钮的时候,将当前按钮设置为禁用状态,之后开启一个线程去倒计时,间隔1s修改一下按钮的文本文字,当倒计时结束的时候,将按钮从禁用状态改为正常状态即可
在JavaFx中,由于提供了对应的观察者模式,按钮的文本和禁用状态都是与某个数据绑定,之后修改这个数据即可实现修改文本和状态的功能,还是挺方便的
下面的是简单的源代码
代码
  1. //倒计时的按钮提示
  2. val tip = "发送验证码"
  3. val codeTip = SimpleStringProperty(tip)
  4. val time = SimpleIntegerProperty(0)
  5. jfxbutton(codeTip) {
  6.     disableWhen { time.greaterThan(0) }
  7.     time.addListener { _, _, newValue ->
  8.         runLater {
  9.             if (newValue == 0) {
  10.                 codeTip.value = tip
  11.             } else {
  12.                 codeTip.value = "$tip $newValue"
  13.             }
  14.         }
  15.     }
  16.     action {
  17.       
  18.         //todo 你的逻辑..
  19.         
  20.         time.value = 60
  21.         
  22.         runAsync {
  23.             repeat(60) {
  24.                 runLater {
  25.                     time.value = time.value - 1
  26.                 }
  27.                 Thread.sleep(1000)
  28.             }
  29.         }
  30.         
  31.     }
  32. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表