将布尔(Property)绑定到JavaFX中的List操作

时间:2018-02-28 10:37:51

标签: binding kotlin javafx-8 tornadofx

我发现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)

我不喜欢的是我必须自己调用该函数才开始,因为除非isValid实际发生变化,否则“onChange”显然不会触发。这是一件小事,但我想知道是否有更好的绑定方式,因为这就是我想要的:错误类的存在应该绑定到“isValid”

1 个答案:

答案 0 :(得分:3)

在TornadoFX中,实现此目的的最佳方法是使用toggleClass函数,该函数将根据布尔可观察值自动添加或删除给定的类。因此,您可以简单地说:

tab.toggleClass(Styles.error, product.isValid)

此示例要求您使用TornadoFX的Type Safe CSS功能。阅读指南中有关Type Safe CSS的更多信息:)