JavaFx 实现水平滚动文本(跑马灯效果)

打印 上一主题 下一主题

主题 937|帖子 937|积分 2811

原文地址: JavaFx 实现水平滚动文本(跑马灯效果) - Stars-One的杂货小窝
本文是以TornadoFx框架进行编写,各位使用JavaFx可以参考
代码已经封装在common-controls库中
效果


代码

实现原理就是利用了JavaFx里的动画效果去修改scrollpane的translateX属性,原本想在text上改造的,发现文字过多就不行了,最终还是使用了scrollpane组件来完成功能
就是需要注意的是,设置的文本需要处理一下换行符,不然显示效果会很不好看
还有就是,记得文本前面加上几个空格,不然滚动感觉看不了前面的几个字
  1. val simpleNotice=SimpleStringProperty("")
  2. scrollpane {
  3.     alignment = Pos.CENTER_LEFT
  4.     prefWidth = 560.0
  5.     style {
  6.         focusColor = Color.TRANSPARENT
  7.         borderWidth += box(0.px)
  8.         borderColor += box(Color.TRANSPARENT)
  9.         hBarPolicy = ScrollPane.ScrollBarPolicy.NEVER
  10.         vBarPolicy = ScrollPane.ScrollBarPolicy.NEVER
  11.         padding = box(0.px)
  12.     }
  13.     hbox {
  14.         translateY = 5.0
  15.         alignment = Pos.CENTER_LEFT
  16.         label(simpleNotice) {
  17.             val defaultValue = translateXProperty().value
  18.             //滚动的逻辑
  19.             val rollAction: ((String) -> Unit) = {
  20.                 val newValue = it
  21.                 //阅读速度,8个字1s
  22.                 val time = newValue.length / 8
  23.                 translateXProperty().animate(-(newValue.length * 10), Duration.seconds(time.toDouble()), Interpolator.LINEAR) {
  24.                     cycleCount = -1
  25.                     setOnFinished {
  26.                         translateXProperty().set(defaultValue)
  27.                     }
  28.                 }
  29.             }
  30.             simpleNotice.onChange {
  31.                 rollAction.invoke(it?:"")
  32.             }
  33.             rollAction.invoke(simpleNotice.value)
  34.             setOnMouseClicked {
  35.                 //点击事件
  36.             }
  37.         }
  38.     }
  39. }
  40. simpleNotice.set("      这是一个测试公告信息...")
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

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

本版积分规则

郭卫东

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

标签云

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