JavaFX - 将 LinkedHashMap 绑定到 ComboBox
JavaFX - Bind LinkedHashMap to ComboBox
我有 LinkedHashMap 和来自数据库的数据。
private Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
eg: 1, Value1
2, Value2
etc.
我可以将此 LinkedHashMap 与 ComboBox 绑定为 Observable 值吗?
至此,我已经将这段代码填入了这个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");
我有 LinkedHashMap 和来自数据库的数据。
private Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
eg: 1, Value1
2, Value2
etc.
我可以将此 LinkedHashMap 与 ComboBox 绑定为 Observable 值吗?
至此,我已经将这段代码填入了这个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");