Javafx 2 JavaFX&;FXML:如何在FXML中的选择框中设置默认选定项?

Javafx 2 JavaFX&;FXML:如何在FXML中的选择框中设置默认选定项?,javafx-2,javafx,fxml,Javafx 2,Javafx,Fxml,我有以下FXML: <ChoiceBox> <items> <FXCollections fx:factory="observableArrayList"> <String fx:value="2 minutes" /> <String fx:value="5 minutes" /> <String fx:value="15 minut

我有以下FXML:

<ChoiceBox>
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="2 minutes" />
            <String fx:value="5 minutes" />
            <String fx:value="15 minutes" />
        </FXCollections>
    </items>
</ChoiceBox>

但在GUI中,它只显示一个默认值为nothing的ChoiceBox。我希望列表中的第一个元素是默认元素,并禁止选择“null”或“nothing”


如何实现这一点?

我将value属性添加到ChoiceBox标记中,效果很好

<ChoiceBox value="2 minutes">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="2 minutes" />
            <String fx:value="5 minutes" />
            <String fx:value="15 minutes" />
        </FXCollections>
    </items>
</ChoiceBox>

首先,您应该导入所需的价值模型,如Crowell answer,您应该在fxml标题中导入如下内容:

<?import javafx.collections.*?>

第二,如果要导入自己的模型,请先导入,然后按如下方式导入:

<?import com.zzg.mybatis.generator.model.*?>
....

<ChoiceBox layoutX="24.0" layoutY="14.0" prefWidth="150.0">
      <items>
            <FXCollections fx:factory="observableArrayList">
                  <DatabaseDTO name="MySQL" value="1"></DatabaseDTO>
                  <DatabaseDTO name="Oracle" value="2"></DatabaseDTO>
            </FXCollections>
      </items>
</ChoiceBox>

....

@Groostav:如果我们通过编程“知道”应显示为选中的值(例如,我们以编辑形式登录),我们可以执行以下操作:

1) 添加索引为0的新项(即我们需要显示为选中的元素):

2) 显示所选项目(因为我们已经知道它位于位置0):

myChoiceBox.getSelectionModel().select(0)


也许这是一个肮脏的黑客,但它的工作。缺点:为了避免硬编码字符串值,您的选择框中有两次相同的项,我是否可以引用控制器上的字段或方法来获取此值?我不能使用fx:constant,因为它只能在String类中查找字段,我不能(真的)使用绑定语法,因为这样会使属性保持绑定状态。这根本不能回答问题!问题是如何设置默认值,而不是如何导入和包含任何类型的自定义模型。
这部分节省了我的时间
myChoiceBox.getItems().add(0, ItemObtainedProgrammatically);