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

科技资讯 投稿 5300 0 评论

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

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

效果

代码

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

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

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("      这是一个测试公告信息..."

编程笔记 » JavaFx 实现水平滚动文本(跑马灯效果)

赞同 (29) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽