将项添加到在FXML中创建的ComboBox(在JavaFX应用程序的Controller类中)

时间:2018-06-16 15:22:06

标签: java javafx combobox fxml

我正在使用FXML文件来完成应用程序的GUI部分。在一些H和V-Box中,我得到了这个:

<ComboBox id="comboBoxLearn" fx:id="comboBoxLearn" prefHeight="51.0" prefWidth="300.0" promptText="Choose List..." style="-fx-font-size: 24;"/>

另一方面,我有一个Controller.java类,我得到了这个(以及一些更无关的代码):

@FXML
private ComboBox<String> comboBoxLearn;

/**
 * Initialize
 */
@FXML
public void initialize() {
    comboBoxLearn = new ComboBox<>();
    comboBoxLearn.getItems().setAll("General", "Test", "Test2");
    comboBoxLearn.getSelectionModel().select(0);
}

我想要的是: - 使用3个值“General”,“Test”,“Test2”初始化comboBoxLearn并将“General”设置为默认值。

它现在不起作用。没有异常或错误,但框只是空白。

编辑: 离开这条线

comboBoxLearn = new ComboBox<>();

也无济于事,但发生错误。

2 个答案:

答案 0 :(得分:0)

这是因为你创建了新的Combobox对象。如果使用@FXML注释Combobox,则无法创建新对象,因为Java会根据您指定组合框的fxml文件执行此操作。

修改

Ater删除新对象的创建,主类导致异常,因为它不应用控制器类来查看文件。 Controller没有零参数构造函数。当fx:controller被添加到.fxml文件时,它会尝试创建该控制器的实例,该控制器没有零参数构造函数并且程序抛出异常。从fxml文件中删除fx:controller并在代码下面添加代码解决了问题

array.sort()

答案 1 :(得分:0)

您可以初始化ComboBox并选择一个选定的值,如下所示:

<ComboBox id="comboBoxLearn" fx:id="comboBoxLearn">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="General"/>
            <String fx:value="Test"/>
            <String fx:value="Test2"/>
        </FXCollections>
    </items>
    <value>
        <String fx:value="General"/>
    </value>
</ComboBox>