Usare le TableView in TornadoFX e Kotlin

Mattepuffo's logo
Usare le TableView in TornadoFX e Kotlin

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!


Condividi

Commentami!