Горячий, чтобы "сгладить" ObjectProperty ObjectProperty в TornadoFX (расширение JavaFX)? - PullRequest
0 голосов
/ 02 марта 2019

Допустим, у меня есть три класса:

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 в текущем bProperty.value изменилось.

Самое близкое, что я получил, было примерно так:

val cObservable: ObservableValue<ObjectProperty<C>> = nonNullObjectBinding(bProperty) {
        value.cProperty
    }

Но это дает мнеObservableValue ObservableValue C и ObservableValue C.Так что я не могу с этим работать.

Спасибо за вашу помощь заранее.

1 Ответ

0 голосов
/ 04 апреля 2019

Вы можете использовать метод расширения select:

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

или:

val cObservable: ObservableValue<C> = bProperty.select (B::cProperty)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...