除非程序从终端运行,否则不显示JFrame帧图标

时间:2014-06-18 07:56:12

标签: java swing

我终于完成了我的第一个真正的程序,并一直试图对它进行一些收尾。其中一个最后的润色是用图标和一切包装起来。问题是,图标仅在我从终端运行jar时显示。例如,当我双击jar运行它时,我只看到Duke吉祥物。我正在激活相同的jar文件,但是以不同的方式获得不同的结果。

示例1(终端)。 From Terminal 注意图标是如何显示在我的托盘中的。

示例2(双击)。 Double click 请注意图标不会显示在我的托盘中。

有谁知道如何解决这个问题或者问题甚至是什么?

非常感谢。

编辑1:代码

URL iconURL = getClass().getResource("notebook_builder_icon.gif");
ImageIcon icon = new ImageIcon(iconURL);
frame.setIconImage(icon.getImage());

1 个答案:

答案 0 :(得分:2)

terminaldouble click之间的主要区别在于执行位置的上下文。从terminal运行时,执行上下文将是您执行java命令的目录。双击Jar时,上下文将取决于系统。您可以使用System.out.println(new File(".").getCanonicalPath());输出路径。

在您的terminal中,您的上下文为~/Programming/java,而doublle click生成.jar文件的上下文当前文件夹。