我的ComboBox
很少,它们是使用Controller类的ObservableList<String>
方法内的initialize()
填充的。当initialize()
运行时,ObservableList<String>
为空,因此不会填充ComboBox
。
无论如何,用户可以通过GUI来向ObservableList<String>,
添加项目,但是由于initialize()
方法已经执行,ComboBox
es不会被填充。如何重新运行initialize()
方法?
还是添加一个Listener
更好?我已经尝试了第二种选择,但是似乎无法将监听器添加到ObservableList<String>,
中,因此我正在考虑以某种方式重新运行`initialize()。
答案 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
将观察基础更改列表并相应地更新其可用项。
例如,通常不建议直接使用ComboBox
向getItems.add()
添加项目或从ObservableList
删除项目。而是只修改{{1}}。