热到 "flatten" TornadoFX(JavaFX 扩展)中 ObjectProperty 的 ObjectProperty?
Hot to "flatten" an ObjectProperty of an ObjectProperty in TornadoFX (JavaFX extension)?
假设我有三个 classes:
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)
如您所见,在 class A 中,我想要一个 cObservable
,它会在 [=14 的值时更新其值=] 更改或当前 bProperty.value
中 cProperty
的值更改时。
我最接近的是这样的:
val cObservable: ObservableValue<ObjectProperty<C>> = nonNullObjectBinding(bProperty) {
value.cProperty
}
但这给了我 ObservableValue
的 ObservableValue
的 C
而不是 ObservableValue
的 C
.所以我无能为力。
提前感谢您的帮助。
您可以使用select
扩展方法:
val cObservable: ObservableValue<C> = bProperty.select { it.cProperty }
或:
val cObservable: ObservableValue<C> = bProperty.select (B::cProperty)
假设我有三个 classes:
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)
如您所见,在 class A 中,我想要一个 cObservable
,它会在 [=14 的值时更新其值=] 更改或当前 bProperty.value
中 cProperty
的值更改时。
我最接近的是这样的:
val cObservable: ObservableValue<ObjectProperty<C>> = nonNullObjectBinding(bProperty) {
value.cProperty
}
但这给了我 ObservableValue
的 ObservableValue
的 C
而不是 ObservableValue
的 C
.所以我无能为力。
提前感谢您的帮助。
您可以使用select
扩展方法:
val cObservable: ObservableValue<C> = bProperty.select { it.cProperty }
或:
val cObservable: ObservableValue<C> = bProperty.select (B::cProperty)