Usare le TableView in TornadoFX e Kotlin
Oggi vediamo un altro componente di TornadoFX, framework per la costruzioni di gui per Kotlin: le TableView!
Partiamo da una classe che rappresenta una Persona:
import java.time.LocalDate
import java.time.Period
class Persona(val nome: String, val birthday: LocalDate) {
val eta: Int get() = Period.between(birthday, LocalDate.now()).years
}
Poi nella nostra finestra abbiamo una cosa del genere:
import javafx.scene.control.SelectionMode
import javafx.scene.control.TableView
import tornadofx.*
import java.time.LocalDate
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
onUserSelect { persona ->
println(persona.nome + " - " + persona.eta)
}
}
}
}
}
Riempiamo una lista con tre record, e poi la assegnamo come model ad una TableView.
Come vedete, per visualizzare i dati del record selezionato con doppio click, usiamo l'evento onUserSelect, come suggeritomi su Stack Overflow.
Avviamo il tutto come al solito:
import javafx.application.Application
import tornadofx.App
fun main(args: Array<String>) {
Application.launch(MyApp::class.java, *args)
}
class MyApp : App() {
override val primaryView = MainView::class
}
Enjoy!
kotlin tornadofx tableview onuserselect
Commentami!