Combobox 无法在运行时填充JavaFX组合框

Combobox 无法在运行时填充JavaFX组合框,combobox,javafx,Combobox,Javafx,我正在做一个项目,在这个项目中,我必须用用户之前刚刚存储在Hashmap中的对象的属性填充一个组合框。这意味着我不能预先将项目分配给组合框。这是我第一次尝试使用javaFX。到目前为止还可以,但当我尝试填充组合框“loggedOnUsersDropDown”时,什么都没有发生。它只是空着。我使用场景生成器创建了包含组合框的UI。该方法的代码如下所示: @FXML protected void loadLoggedOn(){ ArrayList<String> loggedOn

我正在做一个项目,在这个项目中,我必须用用户之前刚刚存储在Hashmap中的对象的属性填充一个组合框。这意味着我不能预先将项目分配给组合框。这是我第一次尝试使用javaFX。到目前为止还可以,但当我尝试填充组合框“loggedOnUsersDropDown”时,什么都没有发生。它只是空着。我使用场景生成器创建了包含组合框的UI。该方法的代码如下所示:

@FXML
protected void loadLoggedOn(){
    ArrayList<String> loggedOn = new ArrayList();

    for (User LOGGED_Onkey : bd.currentSSO.LOGGED_ON.keySet()) {
        loggedOn.add(LOGGED_Onkey.getAttribute(LOGGED_Onkey.USER_NAME));          //System.out.println(LOGGED_Onkey.getAttribute(LOGGED_Onkey.USER_NAME));
    }

    ObservableList<String> obList = FXCollections.observableArrayList(loggedOn);
    //loggedOnUsersDropDown.getItems().clear();
    loggedOnUsersDropDown = new ComboBox<String>();
    loggedOnUsersDropDown.getItems().addAll(obList);
    System.out.println(loggedOn.size());
}
@FXML
受保护的void loadLoggedOn(){
ArrayList loggedOn=新的ArrayList();
for(用户登录密钥:bd.currentSSO.LOGGED\u ON.keySet()){
loggedOn.add(LOGGED_Onkey.getAttribute(LOGGED_Onkey.USER_NAME));//System.out.println(LOGGED_Onkey.getAttribute(LOGGED_Onkey.USER_NAME));
}
ObservableList obList=FXCollections.observableArrayList(loggedOn);
//loggedOnUsersDropDown.getItems().clear();
loggedOnUsersDropDown=新组合框();
loggedOnUsersDropDown.getItems().addAll(obList);
System.out.println(loggedOn.size());
}

如果您能给我答复,我将不胜感激。如果我忘了一些重要的信息,请提前谢谢

您正在创建一个新的
组合框并填充它。该组合框
不是场景图的一部分,因此您看不到填充它的结果

假设
@FXML
注入设置正确,您应该能够删除该行

loggedOnUsersDropDown = new ComboBox<String>();
loggedOnUsersDropDown=newcombobox();

它将正常工作。

您正在创建一个新的组合框。你有没有把新的添加到场景图中?没有。我认为javafx正在为我处理这个问题,因为combobox是在scene bulilder中创建的。谢谢你的提示。我似乎无法将组合框添加到任何内容中,例如,行“root.getChildren().add(loggenonUserDropdown)”不起作用。有关如何正确添加组合框的任何提示?谢谢为什么要创建一个新的组合框?因为我必须动态填充它。我事先在盒子里没有我需要的绳子。还有其他选项可以填充现有的吗?我刚刚意识到场景生成器无法找到组合框的字段。尽管它是这样初始化的:@FXML组合框loggedOnUsersDropDown。像这样初始化的所有其他东西似乎都工作得很好。谢谢你的回答,我试过了。出于某种原因,我得到了一个NullPointerExection。我认为@FXML注入有问题。此外,场景生成器似乎不会重新设置注入字段。但就像我说的,其他一切都很好。非常感谢您的帮助;)因此,编辑您的问题以包括FXML文件的相关部分(组合框的定义)和控制器中组合框的声明。