【问题标题】:Put a program icon depending on the platform根据平台放置程序图标
【发布时间】:2017-05-02 14:45:35
【问题描述】:

我意识到我的代码在不同平台上设置程序图标(而不是 java 图标)时存在问题。我为 windows 和 mac 编写了这段代码:

private void putIcon() {
    URL url = ClassLoader.getSystemResource("resources/icon.png");

    String name = System.getProperty("os.name");
    if (name.startsWith("Win")) {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Image img = kit.createImage(url);
        this.setIconImage(img);
    } else {
        Application.getApplication().setDockIconImage(new ImageIcon(url).getImage());
    }
}

当我在 mac 中测试它时没有问题,但是当我尝试 windows 时,我意识到这不起作用,因为该类不在 windows 中:

import com.apple.eawt.Application;

我能做些什么来解决这个问题?根据我的研究,在代码的导入部分中不可能有某种“if”,并且如果该类在 windows 中,它将无法编译。

【问题讨论】:

    标签: java swing netbeans import icons


    【解决方案1】:

    检查指定类Application是否可以通过使用找到

    Class.forName("com.apple.eawt.Application");
    

    如果此方法抛出 ClassNotFoundException,请仅使用反射调用所需的方法。看起来有点hacky,但它应该可以工作。

    还要确保您没有导入该类。

    【讨论】:

    • 是的,反射有效;示例可以在hereOSXAdapter 中找到here
    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2016-09-12
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多