如何将 属性 的 属性 绑定到 Tornado TableView 中的列?

How to bind a property of a property to column in Tornado TableView?

我正在尝试将 属性 或 属性 或 class 绑定到 TornadoFX TableView 中的列。它只是让我绑定 属性 本身,它是 class 的一个实例。这显示了 class (model.Address@2fe90a0b) 的实例 ID,而不是我想要显示的 属性。有没有办法将 属性 的属性绑定到 TableView 中的列?

val people = mutableListOf<Person>().observable()

tableview(people) { 
    id="ResultTable"
    readonlyColumn("First Name",Person::firstName)
    readonlyColumn("Last Name",Person::lastName)
    readonlyColumn("Email Address",Person::email)
    readonlyColumn("Street", Person::address) // this property is a class
    columnResizePolicy = SmartResize.POLICY
    isEditable = true
}

我想将 属性 Address.street 绑定到列 "Street"

是的,这是可能的,而且您有多种选择。一种是简单地覆盖列中显示的内容:

readonlyColumn("Street", Person::address).cellFormat {
    text = it.street
}

另一个是提供一个函数来提取属性。但是,由于您似乎选择不遵循最佳实践并在域对象中使用可观察的属性,因此当您 return 时,您需要将 String 值转换为可观察的 属性:

column<Person, String>("Street") {
    SimpleStringProperty(it.value.address.street) 
}