你需要引用属性,而不是getter。
User::id
. 要引用不可变属性,需要使用
readonlyColumn
建设者:
readonlyColumn("id", User::id)
readonlyColumn("name", User::name)
也就是说,您确实应该在域对象中使用javafx属性。在基于JavaFX的应用程序中不这样做只会使所有事情变得更困难,并且您可以从很多好处中解脱出来,或者至少您必须跳出困境。
下面是用可观察的JavaFX属性编写的完整应用程序。请注意,然后您将访问
idProperty
和
nameProperty
而不是属性。使用此方法,对基础数据项的更改也将自动在TableView中可见:
class User(id: Int, name: String) {
val idProperty = SimpleIntegerProperty(id)
var id by idProperty
val nameProperty = SimpleStringProperty(name)
var name by nameProperty
}
private val data = listOf(User(111, "AAA"), User(222, "BBB"), User(333, "CCC"), User(444, "DDD")).observable()
class HelloWorld : View() {
override val root = vbox {
tableview(data) {
column("id", User::idProperty)
column("name", User::nameProperty)
}
}
}