设为首页 加入收藏

TOP

JavaFx 实现水平滚动文本(跑马灯效果)
2023-07-25 21:29:18 】 浏览:27
Tags:JavaFx 水平滚 文本 马灯效

原文地址: 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("      这是一个测试公告信息...")
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇线上问题排查回答(转载) 下一篇订单30分钟未支付自动取消怎么实..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目