将图像添加到JAR Java

22 java resources jar core

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

setIconImage(Toolkit.getDefaultToolkit().getImage(
                "D:\\RFT\\src\\dailogBox\\dump.jpg"));
Run Code Online (Sandbox Code Playgroud)

像这样我做了.

Mne*_*nth 42

第一步:将图像放在JAR文件中的已定义位置.如果你把它放到src文件夹中,也许你的IDE或你的构建工具会自动将它打包到JAR.否则,请检查IDE/build-tool的文档,您需要在哪个位置放置它.

第二步:从程序中访问该文件.我假设您将它放在包(JAR中的路径)package1/package2中,该文件名为dump.jpg.在这种情况下,你打电话:

setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg")));
Run Code Online (Sandbox Code Playgroud)

getClass().getResource(...)返回类路径上资源的URL.使用'/'在类路径中启动路径,并使用资源的完整路径/包,用'/'分隔.

  • @KareemMesbah,您只需将其引用为MyClass.class.getResource("/ path/to/file.jpg") (3认同)

Mar*_*OEE 6

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

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

然后在构造函数的开头简单地使用以下3行代码来访问任何包含SystemTray图像的图像,这些图像不接受简单的ImageIcon作为其主要图标(我知道很奇怪).3x行是:

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

(someimgicon只是一个声明为Image变量的构造函数) 现在您可以将窗口图标设置为:

setIconImage(someimgicon);
Run Code Online (Sandbox Code Playgroud)

在设置System TrayIcon时同时使用相同的变量,声明:

 trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);
Run Code Online (Sandbox Code Playgroud)

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

作为奖励,一旦JAR在您的类路径中注册 - 您可以随时将任何其他图像添加到同一个JAR中,而不会有任何大惊小怪 - 一切正常,添加的图像可立即供您的应用使用.

我认为好多了.


hha*_*fez 1

有很多方法,例如在您的 jar 文件中创建一个名为 resources 的文件夹,并使用相对路径从那里引用您的图像......