diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java index d699291c2..310b3867c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Config.java @@ -141,7 +141,7 @@ public final class Config implements Cloneable, Observable { private StringProperty versionListSource = new SimpleStringProperty("balanced"); @SerializedName("configurations") - private ObservableMap configurations = FXCollections.observableMap(new TreeMap<>()); + private SimpleMapProperty configurations = new SimpleMapProperty<>(FXCollections.observableMap(new TreeMap<>())); @SerializedName("accounts") private ObservableList> accountStorages = FXCollections.observableArrayList(); @@ -476,7 +476,7 @@ public final class Config implements Cloneable, Observable { return versionListSource; } - public ObservableMap getConfigurations() { + public MapProperty getConfigurations() { return configurations; } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java index 744b7ebed..fd4022ea4 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Profiles.java @@ -20,6 +20,7 @@ package org.jackhuang.hmcl.setting; import javafx.application.Platform; import javafx.beans.Observable; import javafx.beans.property.*; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.event.EventBus; @@ -29,8 +30,8 @@ import java.io.File; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.TreeMap; import java.util.function.Consumer; -import java.util.stream.Collectors; import static javafx.collections.FXCollections.observableArrayList; import static org.jackhuang.hmcl.setting.ConfigHolder.config; @@ -130,8 +131,11 @@ public final class Profiles { if (!initialized) return; // update storage - config().getConfigurations().clear(); - config().getConfigurations().putAll(profiles.stream().collect(Collectors.toMap(Profile::getName, it -> it))); + TreeMap newConfigurations = new TreeMap<>(); + for (Profile profile : profiles) { + newConfigurations.put(profile.getName(), profile); + } + config().getConfigurations().setValue(FXCollections.observableMap(newConfigurations)); } /**