簡體   English   中英

如何更改Java程序的Dock圖標?

[英]How do you change the Dock Icon of a Java program?

如何在Macintosh平台上使用Java更改程序的Dock圖標? 我聽說過使用Apple的Java庫(在Mac平台上提供了某種額外的支持),但是我還沒有找到一些實際的例子。

雖然我不確定如何在運行時進行更改,但是可以使用-Xdock:icon選項在命令行上設置Dock圖標,例如:

 >java -Xdock:icon=/path/myIcon.png myApp

本文提供了有關將Java應用程序引入Mac的許多有用的小信息,您可能有興趣查看此處列出的Mac實用程序和工具以及此處列出的部署選項(如果您想轉到最后一個鏈接,則特別有用Java Webstart路線)。

Apple eAWT提供了Application類,該類允許更改應用程序的停靠圖標。

import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);

如果使用Eclipse,則可以將項目導出為Mac OS X應用程序捆綁包,並指定一個.icns文件用作圖標。
在Eclipse中,轉到“文件”>“導出”,然后在“其他”目錄中選擇“ Mac OS X應用程序捆綁包”選項。

單擊下一步按鈕。
然后,您將看到“應用程序捆綁包導出菜單”。
此菜單上的最后一個選項是“圖標”。 在這里您可以指定.icns文件用作停靠圖標。

2個Eclipse導出菜單的圖片

就創建.icns文件而言,您可以使用Apple的Icon Composer從圖像文件創建.icns文件。 這是有關制作Mac圖標的好教程。

對於Microsoft Windows

setIconImage(new ImageIcon("Football.png").getImage());

對於Mac OS X

import com.apple.eawt.Application;
Application.getApplication().setDockIconImage(new ImageIcon("Football.png").getImage());

Java 9及更高版本的解決方案

在JDK 9中,將不再能夠訪問內部API,例如Mac OS X com.apple.eawt軟件包中的內部API。

參見: http : //openjdk.java.net/jeps/272

package main;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Image;
import java.awt.Taskbar;
import java.awt.Toolkit;
import java.net.URL;

/**
 * author: flohall
 * date: 2019-07-07
 */
public final class Main {

    public static void main (String[] args){

        final JFrame jFrame = new JFrame();

        //loading an image from a file
        final Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
        final URL imageResource = Main.class.getClassLoader().getResource("resources/images/icon.gif");
        final Image image = defaultToolkit.getImage(imageResource);

        //this is new since JDK 9
        final Taskbar taskbar = Taskbar.getTaskbar();

        try {
            //set icon for mac os (and other systems which do support this method)
            taskbar.setIconImage(image);
        } catch (final UnsupportedOperationException e) {
            System.out.println("The os does not support: 'taskbar.setIconImage'");
        } catch (final SecurityException e) {
            System.out.println("There was a security exception for: 'taskbar.setIconImage'");
        }

        //set icon for windows os (and other systems which do support this method)
        jFrame.setIconImage(image);

        //adding something to the window so it does show up
        jFrame.getContentPane().add(new JLabel("Hello World"));

        //some default JFrame things
        jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
        jFrame.pack();
        jFrame.setVisible(true);
    }
}

此代碼可以按原樣使用。 只需更改圖像的路徑即可。
這種為Mac OS Dock設置圖標的新實現方式(在JDK 9+中)比以前更好,因為在構建應用程序時不會遇到任何問題。 在Windows計算機上使用此代碼也沒有問題。 不建議使用反射,因為也不需要Java 9。

如果安裝了XCode,則可以使用JarBundler使用Jar文件創建Mac App。 如果沒有XCode,則可以使用以下JarBundler:

http://sourceforge.net/projects/jarbundler/

在創建捆綁程序的過程中,您可以在.icns擴展名中選擇一個圖標。 那將是您的Dock圖標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM