TornadoFX TableView: получить значение выбранной строки

У меня есть этот TableView в TornadoFX (Kotlin):

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

как я могу получить значение полей?

1 ответ

Решение

Вы уже обнаружили, что у вас есть экземпляр вашего Persona класс, так что поля легко доступны для вас. Однако TornadoFX имеет удобную функцию для обработки двойного щелчка по TableRow:

onUserSelect { persona ->
    println(persona.nome)
}

onUserSelect Функция принимает необязательный параметр для настройки количества нажатий, на которые нужно реагировать, по умолчанию 2, поэтому он работает как обратный вызов двойного щелчка.

Другие вопросы по тегам