web-dev-qa-db-ja.com

ComboBox FXMLのデフォルト値

FXMLを使用してComboBoxにデフォルト値を設定するにはどうすればよいですか?

<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>

デフォルトでNVTを選択してください。追加してみましたselected="selected"などですが、正しい構文を見つけられないようです。

シーンビルダーを使用してリストされたアイテムを編集することは可能ですか?見つけられないようです。

17
Perneel

これを使って:

<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>
42
Guedolino

FXMLではそれが可能ではないと思います。たとえば、次の行cbo_Bacteriologie_Aesculine.getSelectionModel().setSelectedIndex(1);を使用して、要素Bezigを選択することで、コントローラーのコンポーネントの初期化でそれを行う必要があります。

しかし、FXMLでそれを行う方法を見つけたら、私は興味があります。

編集:FXMLで可能です。これは、ゲドリーノの回答( https://stackoverflow.com/a/14436371/1344424 )で確認できます。これは、この質問に対する正しい回答になるはずです。

8
Teocali

最初に提案された方法で奇妙なエラーが発生しました

setSelectedItem(T)は、Tが型変数であるSelectionModelでアクセスを保護しています。Tは、クラスSelectionModelで宣言されたオブジェクトを拡張します。

私のために

getSelectionModel().select("NVT");

魅力のように働いた。

6
The Unfun Cat