将映像添加到 JAR Java

2022-09-01 20:08:39

我正在使用一些图像,我已经给出了一个路径将图像加载到框架的面板中,但是当我制作应用程序的jar时,它不显示图像。
我应该将图像放置在何处?
应如何指定路径?JFrame

setIconImage(Toolkit.getDefaultToolkit().getImage(
                "D:\\RFT\\src\\dailogBox\\dump.jpg"));

就像我做过的那样。


答案 1

第一步:将映像放在 JAR 文件中的定义位置。如果将其放入 src 文件夹中,则您的 IDE 或构建工具会自动将其打包到 JAR 中。否则,请检查IDE/构建工具的文档,您必须将其放在哪个位置。

第二步:从程序访问文件。我假设你把它放在包(JAR中的路径)package1/package2中,文件被称为转储.jpg。在这种情况下,您调用:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg")));

getClass().getResource(...) 返回类路径上资源的 URL。在类路径中,以“/”开始路径,并使用资源的完整路径/包,以“/”分隔。


答案 2

这是处理 JAR 应用中所有图像和图标的最佳方式。

将所有图像和图标压缩到其自己的 JAR 文件中后 - 通过将图像 JAR 文件添加到库选项卡中来配置构建路径,以便它现在包含在类路径中。

然后,只需在构造器的开头使用以下3x行代码即可访问任何内容所需的任何图像,包括不接受简单ImageIcon作为其主图标的SystemTray图像(我知道很奇怪)。3x 行是:

  URL iconUrl = this.getClass().getResource("/image-iconb.png");
  Toolkit tk = this.getToolkit();
  someimgicon = tk.getImage(iconUrl);

(someimgicon只是一个构造函数声明的图像变量)现在,您可以简单地设置窗口图标:

setIconImage(someimgicon);

同时在设置系统托盘图标时使用相同的变量,方法是声明:

 trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);

以上允许您轻松集中地声明图像或图像图标,而不会冒着不将图像资源保存在正确位置的风险。它保持了它的整洁和整洁,JAR包含所有图像在运行时自动编译和分发程序。

作为奖励,一旦JAR在您的类路径中注册 - 您可以随时将任何其他图像添加到同一JAR中,而不必大惊小怪 - 一切都可以正常工作,添加的图像立即可用于您的应用程序。

在我看来好多了。


推荐