Я просто озадачил использование funtion cellCache
в TornadoFX
с Kotlin
. Вывод всегда странный и неожиданный, что с этим происходит? Код здесь:CellCache неожиданно появляется в TableView с tornadoFX
data class Person(var name : String, var age : Int, var sex : Boolean)
class MyView: View()
{
val list = listOf<Person>(
Person("Name A", 20, false),
Person("Name B", 22, false),
Person("Name C", 21, true),
Person("Name D", 30, true),
Person("Name E", 35, true)
).observable()
override val root = stackpane {
vbox {
tableview(items = list) {
column("Name", Person::name)
column("Age", Person::age)
column("Sex", Person::sex).cellCache{
checkbox{
isSelected = it
setOnAction {
println("Selection: $isSelected")
}
}
}
}
}
}
}
Я ожидаю, что все строки будут оказывать с checkbox
в колонке "Sex"
, но приведенный выше код будет только отображаться два: один selected
и другой unselected
, что, черт возьми, что происходит с cellcache
? Я также нахожу изменения data class
с приведенной ниже, и это правильно:
data class Person(var name : String, var age : Int, var sex : SimpleBooleanProperty)
Однако я должен многое изменить с помощью свойств класса данных в этом случае, я не знаю, почему. Помогите мне, и спасибо заранее!
К сожалению, последний код класса Person не должен использовать класс данных, а просто общий префикс класса. это работает: 'class Person (var name: String, var age: Int, sex: Boolean) { var sex by property (SimpleBooleanProperty (sex)) fun sexProperty() = getProperty (Person :: sex) }' – SpkingR