如何使用数据库(TornadoFX)中的信息更新自动完成组合框建议列表?
How to update autocomplete combobox suggestion list with info from the database (TornadoFX)?
我有一个自动完成组合框,效果很好,但建议列表在 runAsync
操作完成后不会更新。
import javafx.beans.property.SimpleObjectProperty
import javafx.collections.ObservableList
import tornadofx.*
class TestBox : View("My View") {
var treatment = SimpleObjectProperty<String>()
var treatmentList = SimpleObjectProperty<ObservableList<String>>()
override val root = borderpane {
center {
form {
fieldset {
field("Fruit") {
combobox(treatment, treatmentList.value) {
makeAutocompletable()
}
}
}
}
}
}
init {
runAsync {
listOf("Rice", "beans", "Yams").observable()
} ui {
treatmentList.set(it)
}
}
}
我错过了什么?谢谢
您没有使用 ObservableList
。您正在更改包含列表的 属性 的内容。组合框永远不知道 treatmentList
属性,因此它无法观察它。
尝试将 treatmentList
设为 ObservableList<String>
。然后,你可以在 runAsync
s ui
块中执行 treatmentList.setAll(it)
。
import javafx.beans.property.SimpleObjectProperty
import tornadofx.*
class TestBox : View("My View") {
var treatment = SimpleObjectProperty<String>()
var treatmentList = mutableListOf<String>().observable()
override val root = borderpane {
center {
form {
fieldset {
field("Fruit") {
combobox(treatment, treatmentList) {
makeAutocompletable()
}
}
}
}
}
}
init {
runAsync {
listOf("Rice", "beans", "Yams")
} ui {
treatmentList.setAll(it)
}
}
}
我有一个自动完成组合框,效果很好,但建议列表在 runAsync
操作完成后不会更新。
import javafx.beans.property.SimpleObjectProperty
import javafx.collections.ObservableList
import tornadofx.*
class TestBox : View("My View") {
var treatment = SimpleObjectProperty<String>()
var treatmentList = SimpleObjectProperty<ObservableList<String>>()
override val root = borderpane {
center {
form {
fieldset {
field("Fruit") {
combobox(treatment, treatmentList.value) {
makeAutocompletable()
}
}
}
}
}
}
init {
runAsync {
listOf("Rice", "beans", "Yams").observable()
} ui {
treatmentList.set(it)
}
}
}
我错过了什么?谢谢
您没有使用 ObservableList
。您正在更改包含列表的 属性 的内容。组合框永远不知道 treatmentList
属性,因此它无法观察它。
尝试将 treatmentList
设为 ObservableList<String>
。然后,你可以在 runAsync
s ui
块中执行 treatmentList.setAll(it)
。
import javafx.beans.property.SimpleObjectProperty
import tornadofx.*
class TestBox : View("My View") {
var treatment = SimpleObjectProperty<String>()
var treatmentList = mutableListOf<String>().observable()
override val root = borderpane {
center {
form {
fieldset {
field("Fruit") {
combobox(treatment, treatmentList) {
makeAutocompletable()
}
}
}
}
}
}
init {
runAsync {
listOf("Rice", "beans", "Yams")
} ui {
treatmentList.setAll(it)
}
}
}