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

问题描述 投票:1回答:1

在发现我必须重新声明每个字段作为属性之后,我发现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”

binding kotlin javafx-8 tornadofx
1个回答
3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.