我意识到我的代码在不同平台上设置程序图标(而不是 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/