我的JavaFx应用程序中有一个ChoiceBox,名为choiceBoxPizza。

在我的控制器中,我声明了:

@FXML
private ChoiceBox choiceBoxPizza;


我包含一些测试数据的函数是:

private void fillChoiceBoxPizza(){
    try {
        List<String> list = new ArrayList<String>();
        list.add("Pizza A");
        list.add("Pizza B");
        list.add("Pizza C");
        ObservableList obList = FXCollections.observableList(list);
        choiceBoxPizza = new ChoiceBox<>(obList);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        System.out.println(e.toString());
    }

}


因此,应使用list填充。奇怪的是,我没有得到任何异常,而choiceBox在方法调用之后仍然为空。

我的逻辑有误吗?

最佳答案

替换此行:

choiceBoxPizza = new ChoiceBox<>(obList);


与此,它应该工作:

choiceBoxPizza.setItems(obList)


您不应该初始化.fxml文件中已经声明的元素。 Here是有关JavaFX中初始化过程如何工作的更广泛的解释。

希望这可以帮助

10-07 22:59