当前位置: 首页 -> 城市 -> 内容页

世界最新:JavaFx 实现水平滚动文本(跑马灯效果)

发布日期:2023-04-27 17:33:34   来源:博客园


(资料图片仅供参考)

原文地址: JavaFx 实现水平滚动文本(跑马灯效果) - Stars-One的杂货小窝

本文是以TornadoFx框架进行编写,各位使用JavaFx可以参考

代码已经封装在common-controls库中

效果代码

实现原理就是利用了JavaFx里的动画效果去修改scrollpane的translateX属性,原本想在text上改造的,发现文字过多就不行了,最终还是使用了scrollpane组件来完成功能

就是需要注意的是,设置的文本需要处理一下换行符,不然显示效果会很不好看

还有就是,记得文本前面加上几个空格,不然滚动感觉看不了前面的几个字

val simpleNotice=SimpleStringProperty("")scrollpane {    alignment = Pos.CENTER_LEFT    prefWidth = 560.0    style {        focusColor = Color.TRANSPARENT        borderWidth += box(0.px)        borderColor += box(Color.TRANSPARENT)        hBarPolicy = ScrollPane.ScrollBarPolicy.NEVER        vBarPolicy = ScrollPane.ScrollBarPolicy.NEVER        padding = box(0.px)    }    hbox {        translateY = 5.0        alignment = Pos.CENTER_LEFT        label(simpleNotice) {            val defaultValue = translateXProperty().value            //滚动的逻辑            val rollAction: ((String) -> Unit) = {                val newValue = it                //阅读速度,8个字1s                val time = newValue.length / 8                translateXProperty().animate(-(newValue.length * 10), Duration.seconds(time.toDouble()), Interpolator.LINEAR) {                    cycleCount = -1                    setOnFinished {                        translateXProperty().set(defaultValue)                    }                }            }            simpleNotice.onChange {                rollAction.invoke(it?:"")            }            rollAction.invoke(simpleNotice.value)            setOnMouseClicked {                //点击事件            }        }    }}simpleNotice.set("      这是一个测试公告信息...")
关键词:
x
x

Copyright ?  2015-2022 海峡旅游网版权所有  备案号:皖ICP备2022009963号-10   联系邮箱:396 029 142 @qq.com