如何为SWT Java应用程序设置高质量的OSX停靠图标

时间:2011-06-06 15:41:25

标签: java macos swt

我编写了一个SWT Java应用程序,并希望将其配置为在OSX基座中使用高质量图标。这是我目前的代码:

// Prepare window
final Shell window = new Shell();

// Load icons
Display display = window.getDisplay();
ClassLoader loader = InTraceStandaloneUI.class.getClassLoader();
InputStream is16 = loader.getResourceAsStream(
                 "org/intrace/icons/intrace16.gif");
Image icon16 = new Image(display, is16);
is16.close();
InputStream is32 = loader.getResourceAsStream(
                 "org/intrace/icons/intrace32.gif");
Image icon32 = new Image(display, is32);
is32.close();
window.setImages(new Image[] {icon16, icon32});

https://github.com/mchr3k/org.intrace/blob/master/org.intrace/src/org/intrace/client/gui/InTraceStandaloneUI.java

这适用于加载16x16和32x32徽标,这些徽标在Windows上看起来不错,但OSX使用的徽标看起来仍然非常像素化。我只需要指定具有更高分辨率的第三个版本,还是应该使用不同的图像格式或API?

3 个答案:

答案 0 :(得分:5)

实际上,如果你调用Shell.setImages(...)并包含一个128x128图标,那么这将由OSX选择,你可以获得一个高质量的停靠图标,而无需使用Apple扩展类。

答案 1 :(得分:3)

您可以检测OSX并使用Apple Java Extensions并致电Application.setDockIconImage(...)

答案 2 :(得分:1)

不应使用

在Info.plist中引用停靠图标
<key>CFBundleIconFile</key>
<string>icon.icns</string>

行?