TornadoFX TableView:获取选定的行值
TornadoFX TableView: get selected row value
我在 TornadoFX (Kotlin) 中有这个 TableView:
class MainView : View() {
val persone = listOf(
Persona("marco", LocalDate.of(1980, 12, 20)),
Persona("francesca", LocalDate.of(1950, 1, 10)),
Persona("caterina", LocalDate.of(1973, 5, 3))
).observable()
var tbl: TableView<Persona> by singleAssign()
override val root = vbox(10.0)
init {
with(root) {
this.setMaxSize(300.0, 300.0)
tbl = tableview(persone) {
column("Nome", Persona::nome)
column("Data di nascita", Persona::birthday)
column("Età", Persona::eta)
selectionModel.selectionMode = SelectionMode.SINGLE
onDoubleClick {
println(this.selectedItem)
}
}
}
}
}
当我双击一行时,我看到了这个结果:
com.kotlin.test.Persona@581f0ad3
如何获取字段的值?
您已经发现您获得了 Persona
class 的一个实例,因此您可以随时使用这些字段。但是,TornadoFX 有一个方便的函数来处理双击 TableRow:
onUserSelect { persona ->
println(persona.nome)
}
onUserSelect
函数采用可选参数来配置对多少次点击做出反应,默认值为 2,因此它用作双击回调。
我在 TornadoFX (Kotlin) 中有这个 TableView:
class MainView : View() {
val persone = listOf(
Persona("marco", LocalDate.of(1980, 12, 20)),
Persona("francesca", LocalDate.of(1950, 1, 10)),
Persona("caterina", LocalDate.of(1973, 5, 3))
).observable()
var tbl: TableView<Persona> by singleAssign()
override val root = vbox(10.0)
init {
with(root) {
this.setMaxSize(300.0, 300.0)
tbl = tableview(persone) {
column("Nome", Persona::nome)
column("Data di nascita", Persona::birthday)
column("Età", Persona::eta)
selectionModel.selectionMode = SelectionMode.SINGLE
onDoubleClick {
println(this.selectedItem)
}
}
}
}
}
当我双击一行时,我看到了这个结果: com.kotlin.test.Persona@581f0ad3
如何获取字段的值?
您已经发现您获得了 Persona
class 的一个实例,因此您可以随时使用这些字段。但是,TornadoFX 有一个方便的函数来处理双击 TableRow:
onUserSelect { persona ->
println(persona.nome)
}
onUserSelect
函数采用可选参数来配置对多少次点击做出反应,默认值为 2,因此它用作双击回调。