【发布时间】:2018-08-08 05:04:18
【问题描述】:
在克服了我必须将每个字段重新声明为属性的事实之后,我发现 JavaFX 的表现力令人惊讶,所以我有点难过,想知道是否有更好、更惯用的方式将布尔值绑定到某些字段更复杂的操作,例如添加和删除样式类。
在此示例中,我有一个可能有效或无效的项目,并且我希望选项卡的字体颜色表明它是有效的。我通过添加和删除错误样式类来做到这一点:
val errorSwitch = { valid : Boolean ->
logger.debug {"errorSwitcher: $valid"}
if( valid) tab.styleClass.remove("error")
else tab.styleClass.add("error")
Unit
}
product.isValid.onChange (errorSwitch)
errorSwitch(product.isValid.value)
我在这里不喜欢的是,我必须自己调用一次函数才能开始,因为“onChange”显然不会触发,除非 isValid 实际发生变化。这是一件小事,但我想知道是否没有更好的绑定方法,因为这就是我想要的:错误类的存在应该绑定到“isValid”
【问题讨论】:
-
除了使用
Bindings.bindBidirectional时,没有内置的方法可以做你想做的事。但是实现起来很简单,请查看EasyBind 中的subscribe方法。 -
这个库看起来棒极了,我去看看,谢谢!
标签: binding kotlin javafx-8 tornadofx