可编辑组合框 FXML 默认值

Editable ComboBox FXML default value

有一种方法可以在 JavaFx fxml 上为 ComboBox 设置默认值。

我在这里找到了解决方案:

<ComboBox editable="true">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="NVT" />
            <String fx:value="Bezig" />
            <String fx:value="Positief" />
            <String fx:value="Negatief" />
        </FXCollections>
    </items>
    <value>
        <String fx:value="NVT" />
    </value>
</ComboBox>

但当 Editable 属性 设置为 true 时它不起作用。 如何将默认值设置为可编辑的 ComboBox?

我担心 FXML 无法做到这一点,但在 Java 代码中:

ComboBox<String> combobox = new ComboBox<>(FXCollections.observableArrayList("1","2","3","4","5"));
combobox.setEditable(true);
combobox.getSelectionModel().selectFirst();

或者,如果您想要 select 特定值:

combobox.getSelectionModel().select("3");

如果您通过属性而不是元素设置值,它似乎可以工作:

<ComboBox editable="true" value="NVT">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="NVT" />
            <String fx:value="Bezig" />
            <String fx:value="Positief" />
            <String fx:value="Negatief" />
        </FXCollections>
    </items>

</ComboBox>

如果您传入对同一字符串的引用,它也可以这样工作:

<ComboBox editable="true" value="$defaultSelection">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:id="defaultSelection" fx:value="NVT" />
            <String fx:value="Bezig" />
            <String fx:value="Positief" />
            <String fx:value="Negatief" />
        </FXCollections>
    </items>

</ComboBox>