如何在Macintosh平台上用Java更改程序的Dock图标?我听说过使用Apple的Java库(它在Mac平台上提供了某种额外的支持),但我还没有找到一些实际的例子。
发布于 2012-01-03 01:27:57
苹果eAWT提供了Application类,允许更改应用程序的停靠图标。
import com.apple.eawt.Application;
...
Application application = Application.getApplication();
Image image = Toolkit.getDefaultToolkit().getImage("icon.png");
application.setDockIconImage(image);
发布于 2011-05-15 10:51:26
虽然我不确定如何在运行时更改它,但您可以在命令行中使用-Xdock:icon
选项设置Dock图标,如下所示:
>java -Xdock:icon=/path/myIcon.png myApp
This article上有很多关于把java应用程序带到Mac上的有用的小信息,你可能会有兴趣看一下Mac上列出的here的实用程序和工具,以及列出的部署选项here (如果你想沿着Java Webstart路线走下去,最后一个链接特别有用)。
发布于 2019-07-08 00:50:29
Java 9及更高版本的解决方案
在JDK9中,诸如Mac 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。
https://stackoverflow.com/questions/6006173
复制相似问题