如何将 属性 的 属性 绑定到 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)
}
我正在尝试将 属性 或 属性 或 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)
}