16

我有以下 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”或禁止任何内容。

我该如何做到这一点?

4

3 回答 3

17

我将 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>
于 2013-08-15T03:27:09.943 回答
1

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

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

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

2) 将项目显示为选中状态(因为我们已经知道它在位置 0):

myChoiceBox.getSelectionModel().select(0);

这可能是一种肮脏的黑客行为,但它确实有效。缺点:您的选择框中有两次相同的项目

于 2018-11-28T20:37:50.767 回答
1

首先,您应该导入所需的值模型,例如 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>
于 2016-05-09T00:05:04.897 回答