#java #javafx #kotlin #tornadofx
#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)
Как вы, возможно, видели, в классе A я хочу иметь cObservable
, который обновляет свое значение либо при bProperty
изменении значения, либо при изменении значения cProperty
в текущем bProperty.value
.
Ближе всего я подошел к чему-то вроде этого:
val cObservable: ObservableValue<ObjectProperty<C>> = nonNullObjectBinding(bProperty) {
value.cProperty
}
Но это дает мне ObservableValue
ObservableValue
C
ObservableValue
, а не C
оф- оф -оф. Так что я не могу с этим работать.
Заранее спасибо за вашу помощь.
Ответ №1:
Вы можете использовать select
метод расширения:
val cObservable: ObservableValue<C> = bProperty.select { it.cProperty }
или:
val cObservable: ObservableValue<C> = bProperty.select (B::cProperty)