我正在使用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<>();
也无济于事,但发生错误。
答案 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>