原文地址: JavaFx 實(shí)現(xiàn)水平滾動(dòng)文本(跑馬燈效果) - Stars-One的雜貨小窩
本文是以TornadoFx框架進(jìn)行編寫,各位使用JavaFx可以參考
代碼已經(jīng)封裝在common-controls庫(kù)中
效果
代碼
實(shí)現(xiàn)原理就是利用了JavaFx里的動(dòng)畫效果去修改scrollpane的translateX屬性,原本想在text上改造的,發(fā)現(xiàn)文字過多就不行了,最終還是使用了scrollpane組件來完成功能
就是需要注意的是,設(shè)置的文本需要處理一下?lián)Q行符,不然顯示效果會(huì)很不好看文章來源:http://www.zghlxwxcb.cn/news/detail-427124.html
還有就是,記得文本前面加上幾個(gè)空格,不然滾動(dòng)感覺看不了前面的幾個(gè)字文章來源地址http://www.zghlxwxcb.cn/news/detail-427124.html
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
//滾動(dòng)的邏輯
val rollAction: ((String) -> Unit) = {
val newValue = it
//閱讀速度,8個(gè)字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 {
//點(diǎn)擊事件
}
}
}
}
simpleNotice.set(" 這是一個(gè)測(cè)試公告信息...")
到了這里,關(guān)于JavaFx 實(shí)現(xiàn)水平滾動(dòng)文本(跑馬燈效果)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!