From 593159f4a688fcbc9c58b043469739689fc24e9e Mon Sep 17 00:00:00 2001 From: yushijinhun Date: Sat, 16 Jun 2018 18:15:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86DEFAULT=5FICON=E7=A7=BB=E8=87=B3Consta?= =?UTF-8?q?nts,=20=E5=B9=B6=E4=BD=BF=E7=94=A8=E6=87=92=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当类初始化时, JavaFX可能还未启动, 这将使图像加载失败 --- .../main/java/org/jackhuang/hmcl/ui/AddAccountPane.java | 9 +++++---- HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java | 3 --- .../org/jackhuang/hmcl/ui/VersionSettingsController.java | 2 +- .../src/main/java/org/jackhuang/hmcl/util/Constants.java | 8 ++++++++ 4 files changed, 14 insertions(+), 8 deletions(-) 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()