使 tornadofx 组合框处理按键到 select 项

make tornadofx combo box handle keypress to select item

在很多平台上,如果我在下面的组合框获得焦点时开始输入 "a",它会自动突出显示 "alice"。是否可以使用 Tornadofx/Javafx 获得该行为?我尝试添加 setEditable(true) 但这只允许我自由编辑名称并且它不会对现有名称进行任何 highlighting/selection。

class MainView : View("Hello TornadoFX") {
    val names = FXCollections.observableArrayList(
        "alice", "bob", "charlie", "denise")

    override val root = vbox {
        combobox<String> {
            items = names
        }
    }
}

您可以为此使用 TornadoFX makeAutocompletable() 扩展。这是一个语法更严格的示例。请注意,通常您会将组合框的结果绑定到可观察的字符串 属性,因此构建器语法将是 combobox(name, names) 或类似的东西。

class MainView : View("Hello TornadoFX") {
    val names = observableListOf("alice", "bob", "charlie", "denise")

    override val root = vbox {
        combobox(values = names) {
            makeAutocompletable()
        }
    }
}

如果您需要更改过滤条件,您也可以将过滤函数传递给 makeAutocompletable