class ModelA(name: String, description: String) { var name by property(name) fun nameProperty() = getProperty(ModelA::name) var desc by property(description) fun descProperty() = getProperty(ModelA::desc) } class ModelB(name: String, description: String) { val nameProperty = SimpleStringProperty(name) var name by nameProperty val descProperty = SimpleStringProperty(description) var desc by descProperty } class MyView: View() { private val itemList = listOf(ModelB("XYZ", "ABC"), ModelB("MNO", "PQR")).observable() override val root = tableview(itemList) { isEditable = true column("Name", ModelB::nameProperty).useTextField() column("Description", ModelB::descProperty).useTextField() } }