From cadeb1f59c1a9afbb90fe783a3b34723ec8978fd Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Sun, 11 Apr 2021 21:55:09 +0800 Subject: [PATCH] Fix: macOS app icon --- .../main/java/org/jackhuang/hmcl/Launcher.java | 10 ++++++++++ .../java/org/jackhuang/hmcl/ui/AwtUtils.java | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 HMCL/src/main/java/org/jackhuang/hmcl/ui/AwtUtils.java diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 66df693e8..00a6a0e98 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -23,6 +23,7 @@ import javafx.stage.Stage; import org.jackhuang.hmcl.setting.ConfigHolder; import org.jackhuang.hmcl.task.Schedulers; import org.jackhuang.hmcl.task.AsyncTaskExecutor; +import org.jackhuang.hmcl.ui.AwtUtils; import org.jackhuang.hmcl.ui.Controllers; import org.jackhuang.hmcl.upgrade.UpdateChecker; import org.jackhuang.hmcl.upgrade.UpdateHandler; @@ -31,6 +32,7 @@ import org.jackhuang.hmcl.util.Lang; import org.jackhuang.hmcl.util.StringUtils; import org.jackhuang.hmcl.util.platform.OperatingSystem; +import java.awt.*; import java.io.File; import java.io.IOException; import java.lang.management.ManagementFactory; @@ -69,6 +71,8 @@ public final class Launcher extends Application { Platform.setImplicitExit(false); Controllers.initialize(primaryStage); + initIcon(); + UpdateChecker.init(); primaryStage.show(); @@ -84,6 +88,12 @@ public final class Launcher extends Application { Controllers.onApplicationStop(); } + private void initIcon() { + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Image image = toolkit.getImage(Launcher.class.getResource("/assets/img/icon.png")); + AwtUtils.setAppleIcon(image); + } + public static void main(String[] args) { if (UpdateHandler.processArguments(args)) { return; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AwtUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AwtUtils.java new file mode 100644 index 000000000..248399375 --- /dev/null +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AwtUtils.java @@ -0,0 +1,17 @@ +package org.jackhuang.hmcl.ui; + +import java.awt.*; +import java.lang.reflect.Method; + +public class AwtUtils { + public static void setAppleIcon(Image image) { + try { + Class taskbarClass = Class.forName("java.awt.TaskBar"); + Method getTaskBarMethod = taskbarClass.getDeclaredMethod("getTaskBar"); + Object taskBar = getTaskBarMethod.invoke(null); + Method setIconImageMethod = taskbarClass.getDeclaredMethod("setIconImage", Image.class); + setIconImageMethod.invoke(taskBar, image); + } catch (Throwable ignore) { + } + } +}