JavaFX中ComboBox的动态填充

时间:2018-08-01 13:09:39

标签: java javafx

我的ComboBox很少,它们是使用Controller类的ObservableList<String>方法内的initialize()填充的。当initialize()运行时,ObservableList<String>为空,因此不会填充ComboBox。 无论如何,用户可以通过GUI来向ObservableList<String>,添加项目,但是由于initialize()方法已经执行,ComboBox es不会被填充。如何重新运行initialize()方法? 还是添加一个Listener更好?我已经尝试了第二种选择,但是似乎无法将监听器添加到ObservableList<String>,中,因此我正在考虑以某种方式重新运行`initialize()。

1 个答案:

答案 0 :(得分:4)

如果您要初始化ComboBox以使用ObservableList,则无需重新初始化它。

要将项目添加到ComboBox,只需将它们添加到基础的ObservableList

简单示例:

ComboBox<String> comboBox = new ComboBox<>();
ObservableList<String> items = FXCollections.observableArrayList();

// Set the ComboBox to use the items list
comboBox.setItems(items);

// Allow the user to update the items in the list
items.add("A new String");

由于您使用的是ObservableList,因此ComboBox观察基础更改列表并相应地更新其可用项。

例如,通常不建议直接使用ComboBoxgetItems.add()添加项目或从ObservableList删除项目。而是只修改{{1}}。