From ec73d9c08755bc2cac49d941749d9b29e096b5ec Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Thu, 27 Nov 2025 12:02:15 +0100 Subject: [PATCH] =?utf8?q?=F0=9F=9A=B8=20Set=20icon=20for=20frame?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This also sets the icon on the macOS dock, but I have no idea how it looks on Windows or Linux. If you find out, let me know, will you? Thanks! 🥰 --- src/main/java/de/todesbaum/jsite/main/Main.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/de/todesbaum/jsite/main/Main.java b/src/main/java/de/todesbaum/jsite/main/Main.java index e4d5654..b76f3c5 100644 --- a/src/main/java/de/todesbaum/jsite/main/Main.java +++ b/src/main/java/de/todesbaum/jsite/main/Main.java @@ -19,9 +19,12 @@ package de.todesbaum.jsite.main; import java.awt.Component; +import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.Date; import java.util.HashMap; @@ -199,6 +202,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen wizard.addWizardListener(this); jSiteIcon = IconLoader.loadIcon("/jsite-icon.png"); wizard.setIcon(jSiteIcon); + wizard.setIconImage(IconLoader.loadImage("/jsite-icon.png")); updateChecker = new UpdateChecker(freenetInterface, getVersion()); updateChecker.addUpdateListener(this); @@ -775,9 +779,21 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen System.out.println("--config-file needs parameter!"); return; } + setIconOnMacOS(); new Main(configFilename); } + private static void setIconOnMacOS() { + try { + Class applicationClass = Class.forName("com.apple.eawt.Application"); + Object application = applicationClass.newInstance(); + Method setDockIconImageMethod = applicationClass.getDeclaredMethod("setDockIconImage", Image.class); + setDockIconImageMethod.invoke(application, IconLoader.loadImage("/jsite-icon.png")); + } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + /* ignore, if any of these don’t work, we’re probably not on macOS. */ + } + } + /** * Prints a small syntax help. */ -- 2.7.4