FXML如何设置choicebox的默认值

时间:2016-02-13 01:03:24

标签: java javafx javafx-2 javafx-8 fxml

我试图设置我的选择框的默认选定项目,但它没有按预期工作...

<ChoiceBox fx:id="d" value="- Select choice -">
    <String fx:value="hellow"/>
</ChoiceBox>

4 个答案:

答案 0 :(得分:3)

JavaFX & FXML: how do I set the default selected item in a ChoiceBox in FXML?

问题中回答了这个答案

例如,当您想要选择第二个值作为默认值时,您可以在 FXML 文件中执行以下操作:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.collections.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="choicebox.defaultselection.FXMLDocumentController">
    <children>
        <ChoiceBox layoutX="16.0" layoutY="52.0" prefWidth="150.0" value="5 minutes">
            <items>
                <FXCollections fx:factory="observableArrayList">
                    <String fx:value="2 minutes" />
                    <String fx:value="5 minutes" />
                    <String fx:value="15 minutes" />
                </FXCollections>
            </items>
        </ChoiceBox>
    </children>
</AnchorPane>

答案 1 :(得分:0)

您可以使用.setValue("");来设置默认值..请注意valuename

中应该出现observablearray("","","")

实施例

@fxml
private ChoiceBox choiceId; // this is fxml choicebox Id name given in fxml file

ObservableList<String> options = FXCollections.observableArrayList("valuename1","valuename2");

choiceId.setValue("valuename1"); // this statement shows default value 

choiceId.setItems(options); // this statement adds all values in choiceBox

答案 2 :(得分:0)

当我们使用“值”时,它将为您的选择框设置默认值,甚至您可以为您的选择框显示任何短消息:

<ChoiceBox value="- Select choice -">
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="first choice"></String>
</FXCollections>
</items>*emphasized text*
</ChoiceBox>

答案 3 :(得分:0)

这个问题是很多年前提出的,但我不喜欢给出的答案。我最近遇到了同样的问题,我终于意识到了问题所在。以这个为例:

<ChoiceBox fx:id="cb_DBEditors" layoutX="148.0" layoutY="192.0" prefHeight="25.0" prefWidth="124.0" value="Testing">
   <items>
        <FXCollections fx:factory="observableArrayList">
             <String fx:value="SQL Plus" />
             <String fx:value="Something Else" />
        </FXCollections>
   </items>
</ChoiceBox>

默认value=""中的值必须等于fx:value字符串之一。如果不是,则ChoiceBox将为空白。回顾一下,您设置的默认值必须是fx:value列表中的<items>之一。

<ChoiceBox fx:id="cb_DBEditors" layoutX="148.0" layoutY="192.0" prefHeight="25.0" prefWidth="124.0" value="SQL Plus">
   <items>
        <FXCollections fx:factory="observableArrayList">
             <String fx:value="SQL Plus" />
             <String fx:value="Something Else" />
        </FXCollections>
   </items>
</ChoiceBox>