是否热衷于在TornadoFX(JavaFX扩展)中“拉平”一个ObjectProperty的ObjectProperty?

时间:2019-03-02 19:09:24

标签: java javafx kotlin tornadofx

比方说我有三节课:

class A {
    val bProperty: ObjectProperty<B> = SimpleObjectProperty(B(C("test")))

    val cObservable: ObservableValue<C> = ???
}

class B(initialC: C) {
    val cProperty: ObjectProperty<C> = SimpleObjectProperty(initialC)
}

class C(val string: String)

您可能已经看到,AI类中希望有一个 cObservable ,它可以在bProperty的值更改时或在{当前cProperty中的{1}}已更改。

我最接近的是这样的:

bProperty.value

但这给了我val cObservable: ObservableValue<ObjectProperty<C>> = nonNullObjectBinding(bProperty) { value.cProperty } 的{​​{1}}中的ObservableValue,而不是ObservableValue C 。所以这是我无法使用的。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以使用select扩展方法:

val cObservable: ObservableValue<C> = bProperty.select { it.cProperty }

或:

val cObservable: ObservableValue<C> = bProperty.select (B::cProperty)