在OS X上的Java swing中设置默认应用程序图标图像

前端之家收集整理的这篇文章主要介绍了在OS X上的Java swing中设置默认应用程序图标图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在设置一个Jar文件的图标图像:
setIconImage(new ImageIcon(getClass().getResource("logo.png")).getImage());

当在Mac OS X 10.7.4中运行时,我得到以下错误

Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0

解决方法

setIconImage没有设置jar图标.它将设置该JFrame的最小化窗口的图标. jar文件本身不能设置jar图标(它控制finder图标和Dock应用程序图标).您只需获取操作系统提供的默认图标.您将需要使用诸如用于OS X的 JarBundler或Windows的Launch4J.

您可以在应用程序运行时设置应用程序停靠图标,请参阅com.apple.eawt.Application.setDockIconImage.但是,它并不完美,因为当您双击您的jar时,它将使用通用的java图标在dock中启动,并且只切换到您的自定义反弹后的图标或两个java代码开始运行时.另外,我不认为它会设置一个没有运行的jar的dock图标(不是你可以拖动一个jar文件到码头 – 似乎不适用于我).

以下是一些可以设置不同图像的代码

import com.apple.eawt.Application;
import javax.swing.*;

class SetIcon extends JFrame {

    SetIcon() {
        setIconImage(new ImageIcon("doc.png").getImage());
        Application.getApplication().setDockIconImage(
            new ImageIcon("app.png").getImage());
    }

    public static void main(String args[]) {
        SetIcon s = new SetIcon();
        s.setVisible(true);
    }
}

猜你在找的Java相关文章