java - 除非程序从终端运行,否则 JFrame 框架图标不会显示

标签 java swing

我终于完成了我的第一个真正的程序,并一直在努力对其进行一些收尾工作。最后的修饰之一就是用图标和所有东西将其包装起来。问题是,该图标仅在我从终端运行 jar 时显示。例如,当我双击 jar 来运行它时,我只看到杜克大学吉祥物。我正在激活相同的 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());

最佳答案

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

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

关于java - 除非程序从终端运行,否则 JFrame 框架图标不会显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279983/

相关文章:

java - 一个很好的网络数学 Java 库

java - 从众所周知的链接创建自定义 Android 键盘;编译、安装,但设备上没有显示此键盘的选项

java - onDestroy后是否可以调用回调方法?

java - 调整 GridLayout 中面板的大小

Java AWT/Swing 何时使用 repaint() 方法?

java - JoptionPane 有时是空白的

java - 如何鼓励 JAXB 读取 XmlElement 内容字符串?

java - 对于 double 值,assertEquals 的 delta 或 epsilon 参数的含义

java - Java中从多个类绘制到主类

java - 每次做出错误的猜测时,我都需要让我的程序向 GUI 添加一个 .jpg。