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");