繁体   English   中英

热门在TornadoFX(JavaFX扩展)中“展平”ObjectProperty的ObjectProperty?

[英]Hot to “flatten” an ObjectProperty of an ObjectProperty in TornadoFX (JavaFX extension)?

假设我有三个班级:

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的值更改或当前bProperty.valuecProperty值发生更改时更新其值。

我最接近的是这样的:

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

但是,这给了我一个ObservableValue的的ObservableValueC而不是ObservableValueC 所以这不是我可以使用的。

感谢您的帮助。

您可以使用select扩展方法:

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

要么:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM