当前位置: 首页 > 知识库问答 >
问题:

ChoiceBox未在JavaFX中设置ObservableList

公西运良
2023-03-14

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

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

@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填充。奇怪的是,我没有得到任何异常,并且选择框在调用方法后仍然为空。

我的逻辑有错误吗?

共有1个答案

益泰平
2023-03-14

替换此行:

choiceBoxPizza = new ChoiceBox<>(obList);

有了这个,它应该可以工作:

choiceBoxPizza.setItems(obList)

您不应该初始化已在<代码>中声明的元素。fxml文件。下面是关于JavaFX中初始化过程如何工作的更广泛的解释。

希望这有帮助

 类似资料:
  • 当我运行我的应用程序时,我有“应用程序启动方法[警告]java.lang.reflect.InvocationTargetException异常”。我尝试使用fxml路径但仍然不起作用。当使用try/catch时,我有“位置未设置错误”。 我还得到了“未能在项目Test-generator-Maven上执行目标org.codehaus.mojo:exec-maven-plugin:1.2.1:ja

  • 问题内容: 当选择menuItem时,尝试关闭当前场景并打开另一个场景时出现问题。我的主要阶段编码如下: 执行该程序后,它将转到cartHomePage.fxml。选择菜单项后,我可以从那里选择创建产品或创建类别。这是我的动作事件: 但是,我只能切换一次舞台。例如,我的默认页面是cartHomePage.fxml。运行程序时,首先要创建产品阶段。在那之后,我不能再去任何地方了。错误消息是: 我关上

  • 我的项目在eclipse中正常运行,但当我创建该项目的jar文件并试图通过cmd运行它时,它显示“Location is not set”错误。 我的项目结构是: 方法是(在eclipse中运行):

  • 问题内容: 我正在尝试使用JavaFX中的WebView入门,但是当尝试打开W​​ebView时,我收到以下所示的错误,我该如何解决此问题? 问题答案: 尝试运行WebView时遇到任何错误时,请确保您的VM选项包含模块javafx.web。 虚拟机选项: 在IntelliJ中,您可以通过转到IDE右上方的“编辑配置”按钮来访问VM选项。

  • 我想要一个堆栈窗格来模拟FullHD显示,即1920x1080。 下面是创建堆栈窗格并处理它的代码: DisplayPane构造函数方法 ControlButtonPane构造函数类方法: 任何帮助都会很好。

  • 问题内容: 有没有一种方法可以填充JavaFX 或枚举的所有枚举? 这是我尝试的: 在另一个类中,我试图填充一个: 但是我得到一个错误: 我显然也遇到了同样的问题。 问题答案: 如果setItems需要一个ObservableList,则必须给它一个而不是一个数组。 试试这个: 编辑:James_D(请参阅注释)的解决方案是首选的解决方案: