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