diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java index 91e711129..49cbfb7d0 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AddAccountPane.java @@ -46,6 +46,7 @@ import org.jackhuang.hmcl.ui.animation.TransitionHandler; import org.jackhuang.hmcl.ui.construct.AdvancedListBox; import org.jackhuang.hmcl.ui.construct.IconedItem; import org.jackhuang.hmcl.ui.construct.Validator; +import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.Logging; import java.util.Collection; @@ -224,13 +225,13 @@ public class AddAccountPane extends StackPane { image = AccountHelper.getSkinImmediately(yggdrasilAccount, profile, 4, Settings.INSTANCE.getProxy()); } catch (Exception e) { Logging.LOG.log(Level.WARNING, "Failed to get skin for " + profile.getName(), e); - image = FXUtils.DEFAULT_ICON; + image = null; } ImageView portraitView = new ImageView(); portraitView.setSmooth(false); - if (image == FXUtils.DEFAULT_ICON) - portraitView.setImage(FXUtils.DEFAULT_ICON); - else { + if (image == null) { + portraitView.setImage(Constants.DEFAULT_ICON.get()); + } else { portraitView.setImage(image); portraitView.setViewport(AccountHelper.getViewport(4)); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index ef3659ab4..ef5b377af 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -34,7 +34,6 @@ import javafx.scene.control.ListView; import javafx.scene.control.ScrollBar; import javafx.scene.control.ScrollPane; import javafx.scene.control.Tooltip; -import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.input.ScrollEvent; @@ -402,8 +401,6 @@ public final class FXUtils { } } - public static final Image DEFAULT_ICON = new Image("/assets/img/icon.png"); - public static final Interpolator SINE = new Interpolator() { @Override protected double curve(double t) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/VersionSettingsController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/VersionSettingsController.java index 1a70f0853..162d30e5c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/VersionSettingsController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/VersionSettingsController.java @@ -264,7 +264,7 @@ public final class VersionSettingsController { if (iconFile.exists()) iconPickerItem.setImage(new Image("file:" + iconFile.getAbsolutePath())); else - iconPickerItem.setImage(FXUtils.DEFAULT_ICON); + iconPickerItem.setImage(Constants.DEFAULT_ICON.get()); FXUtils.limitSize(iconPickerItem.getImageView(), 32, 32); } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java index 76f684b54..8337473dd 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Constants.java @@ -19,6 +19,11 @@ package org.jackhuang.hmcl.util; import com.google.gson.Gson; import com.google.gson.GsonBuilder; + +import javafx.beans.binding.Bindings; +import javafx.beans.binding.ObjectBinding; +import javafx.scene.image.Image; + import org.jackhuang.hmcl.game.Argument; import org.jackhuang.hmcl.game.Library; import org.jackhuang.hmcl.game.RuledArgument; @@ -65,6 +70,9 @@ public final class Constants { javafx.application.Platform.runLater(s); }; + // lazy loading + public static final ObjectBinding DEFAULT_ICON = Bindings.createObjectBinding(() -> new Image("/assets/img/icon.png")); + public static final Gson GSON = new GsonBuilder() .enableComplexMapKeySerialization() .setPrettyPrinting()