JavaFX& FXML:如何在FXML中的ChoiceBox中设置默认选定项?

时间:2013-08-15 01:28:05

标签: 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 minutes" />
        </FXCollections>
    </items>
</ChoiceBox>

但是在GUI中它只显示一个没有任何默认值的ChoiceBox。我希望列表中的第一个元素是默认值,并且选择“null”或者不禁止任何内容。

我如何做到这一点?

3 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:0)

首先,您应该导入所需的价值模型,例如Crowell回答,您应该在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>

答案 2 :(得分:0)

@Groostav:如果我们以编程方式“知道”应显示为选定的值(例如,进入编辑表单),我们可以执行以下操作:

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

myChoiceBox.getItems().add(0, ItemObtainedProgrammatically);

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

myChoiceBox.getSelectionModel().select(0);

这可能算是肮脏的骇客,但它确实有效。缺点:您在选择框中有两次相同的项目