如何使用数据库(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>。然后,你可以在 runAsyncs 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)
        }
    }
}