我试图将类的属性的属性绑定到TornadoFX TableView中的列。这只是让我绑定属性本身,它是类的实例。这显示了类的实例ID(model.Address@2fe90a0b),而不是我要显示的属性。有没有一种方法可以将属性的属性绑定到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绑定到“街道”列
答案 0 :(得分:1)
是的,这是可能的,并且您有几种选择。一种是简单地覆盖列中显示的内容:
readonlyColumn("Street", Person::address).cellFormat {
text = it.street
}
另一个是提供提取属性的功能。但是,由于您似乎选择不遵循最佳做法并在域对象中使用可观察的属性,因此您需要在返回String值时将其转换为可观察的属性:
column<Person, String>("Street") {
SimpleStringProperty(it.value.address.street)
}