gpt4 book ai didi

css - 如何将 Node 样式(或 styleClass)绑定(bind)到属性?

转载 作者:行者123 更新时间:2023-12-02 13:24:23 24 4
gpt4 key购买 nike

考虑以下示例:

class MainView : View("Example") {
val someBooleanProperty: SimpleBooleanProperty = SimpleBooleanProperty(true)
override val root = borderpane {
paddingAll = 20.0
center = button("Change bg color") {
action {
// let's assume that new someBooleanProperty value is updated
// from some API after button clicked
// so changing style of the borderpane in action block
// of the button is not the solution
someBooleanProperty.value = !someBooleanProperty.value
}
}
}
}

class Styles : Stylesheet() {
companion object {
val red by cssclass()
val green by cssclass()
}

init {
red { backgroundColor += Color.RED }
green { backgroundColor += Color.GREEN }
}
}

如何动态更改 borderpane 的背景颜色取决于 someBooleanProperty (例如 true 时为红色, false 时为绿色)?是否有可能将 CSS 类绑定(bind)到属性?有没有不使用 CSS 的解决方案(意味着在 style block 内等)

最佳答案

如果你想切换一个类(基于 bool 属性添加或删除一个类),你可以使用 Node.toggleClass(CssRule, ObservableValue<Boolean>)功能。

val someBooleanProperty = SimpleBooleanProperty(true)
...
borderpane {
toggleClass(Styles.red, someBooleanProperty)
toggleClass(Styles.green, someBooleanProperty.not())
}

另一方面,如果你想绑定(bind)到一个变化的类值,你可以使用 Node.bindClass(ObservableValue<CssRule>)功能。
val someClassyProperty = SimpleObjectProperty(Styles.red)
...
borderpane {
bindClass(someClassyProperty)
}

然后,您可以将类(class)设置为您想要的任何内容。

关于css - 如何将 Node 样式(或 styleClass)绑定(bind)到属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45466631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com