JavaFX - 将LinkedHashMap绑定到组合框
问题描述:
我有LinkedHashMap和来自数据库的数据。JavaFX - 将LinkedHashMap绑定到组合框
private Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
eg: 1, Value1
2, Value2
etc.
我能够给这个的LinkedHashMap与组合框绑定为可观察值?
到目前为止,我已经填写了这个ComboBox这个代码。
ComboBox.getItems().addAll(this.linkedHashMap.values());
问题是如果我需要重新加载值我必须清除所有ComboBox值,我必须再次导入值。
答
您应该使用ObservableMap
:
private Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
....
ComboBox<String> c = new ComboBox<>();
ObservableMap<Integer, String> observableMap = FXCollections.observableMap(linkedHashMap);
observableMap.addListener(new MapChangeListener<Integer, String>() {
@Override
public void onChanged(
javafx.collections.MapChangeListener.Change<? extends Integer, ? extends String> change) {
if(change.wasAdded()) {
c.getItems().add(change.getValueAdded());
} else if(change.wasRemoved()) {
c.getItems().remove(change.getValueRemoved());
}
}
});
为了CombBox
自动更新,添加条目observableMap
:
observableMap.put(someInt, "someValue");