java - 根据平台放置程序图标

标签 java swing netbeans import icons

我意识到我的代码在不同平台上设置程序图标(而不是 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 中,它将无法编译。

最佳答案

使用以下命令检查是否可以找到指定的类Application

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

如果此方法没有抛出 ClassNotFoundException,则仅使用反射来调用您想要的方法。看起来有点老套,但应该可以。

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

关于java - 根据平台放置程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41190574/

相关文章:

java - 为什么我不能使用已实现接口(interface)的静态方法?

java - JPA 枚举继承

java - 在java jTable中显示lucene搜索结果

java - NetBeans 或 Eclipse。我应该首先使用哪个 IDE?

java - 在 Spring Java 配置中引用 ${user.home}

java - Swing 中的简单日期组件

java - 程序似乎没有运行并且没有标记任何错误

java - 该模块尚未部署。- RESTFUL WEB SERVICE - GLASSFISH SERVER 4.0

java - GlassFish 服务器 core.jar 不包含在已安装的 bundle 列表中

java - 如何在多用户环境中处理表单编辑?