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

Deadly 提交于 2019-12-17 03:41:14

问题


How can I change the Dock Icon of a program, in Java, on the Macintosh platform? I have heard about using Apple's Java library (that provides some sort of extra support on the Mac platform), but I have yet to find some actual examples.


回答1:


Apple eAWT provides the Application class that allows to change the dock icon of an application.

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



回答2:


While I'm not sure how to change it at runtime, you can set at the command line your Dock icon using the -Xdock:icon option, like:

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

This article has lots of useful little info about bringing java apps to Mac, and you may be interested looking at the utilities and tools for Mac listed here, as well as deployment options listed here (the last link is especially useful if you want to go down the Java Webstart route).




回答3:


If your using Eclipse, you can export a project as a Mac OS X Application Bundle and specify an .icns file to use as an icon.
In Eclipse, go to File>Export and choose the 'Mac OS X Application Bundle' option inside the 'Other' directory.

Click the next button.
Then you'll be presented with the 'Application Bundle Export Menu'.
The last option on this menu is 'Icon'. This is where you specify the .icns file to use as the dock icon.

Picture of the 2 Eclipse Export Menus

As far as creating the .icns file is concerned, you can use Apple's Icon Composer to create a .icns file from an image file. Here is a good tutorial on making mac icons.




回答4:


For Microsoft Windows

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

For Mac OS X

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



回答5:


Solution for Java 9 and later

In JDK 9, internal APIs such as those in the Mac OS X com.apple.eawt package will no longer be accessible.

see: 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);
    }
}

This code can be used as is. Just change the path of the image.
This new implemented way (in JDK 9+) of setting the icon for mac os dock is better then before because you won't run into any problem when building your application. Also there is no problem to use this code on a windows computer. Reflection which is not recommended since Java 9 is not needed either.




回答6:


If you have XCode installed, you can use JarBundler to create a Mac App using a Jar file. If you don't have XCode, you can use this JarBundler:

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

During the creation of the bundler, you can choose an icon in the .icns extension. That will be your Dock Icon.



来源:https://stackoverflow.com/questions/6006173/how-do-you-change-the-dock-icon-of-a-java-program

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!