ComboBox FXML default value

2019-03-12 11:56发布

How can I set a default value in a ComboBox using FXML?

<ComboBox fx:id="cbo_Bacteriologie_Aesculine" prefHeight="21.0" prefWidth="105.0" GridPane.columnIndex="1" GridPane.rowIndex="0">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="NVT" />
            <String fx:value="Bezig" />
            <String fx:value="Positief" />
            <String fx:value="Negatief" />
        </FXCollections>
    </items>
</ComboBox>

I want NVT to be selected by default. I tried adding selected="selected" and such but don't seem to find the right syntax.

Is it possible to edit the listed items using Scene Builder? I can't seem to find it.

3条回答
SAY GOODBYE
2楼-- · 2019-03-12 12:29

Use this:

<ComboBox>
    <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>
查看更多
虎瘦雄心在
3楼-- · 2019-03-12 12:34

I don't think it's possible in the FXML. You will need to do it in the initialization of the component, in the controller, for example using the following line cbo_Bacteriologie_Aesculine.getSelectionModel().setSelectedIndex(1); for selecting the element Bezig.

But if you find a way to do it in FXML, I am interested.

EDIT : It is possible in FXML. You can see it in Guedolino's answer (https://stackoverflow.com/a/14436371/1344424), which should become the right answer to this question.

查看更多
在下西门庆
4楼-- · 2019-03-12 12:54

I got a strange error with the first suggested method

setSelectedItem(T) has protected access in SelectionModel where T is a type-variable: T extends Object declared in class SelectionModel

For me

getSelectionModel().select("NVT");

worked like a charm.

查看更多
登录 后发表回答