我在
JFrame
中使用一些图像,我已经给出了将图像加载到框架面板中的路径,但是当我制作应用程序的jar时,它不显示图像。setIconImage(Toolkit.getDefaultToolkit().getImage(
"D:\\RFT\\src\\dailogBox\\dump.jpg"));
我已经这样做了。
第一步:将图像放入 JAR 文件中定义的位置。如果您将其放入 src 文件夹中,也许您的 IDE 或构建工具会自动将其打包到 JAR 中。否则请检查您的 IDE/构建工具的文档,您必须将其放在哪个位置。
第二步:从您的程序访问该文件。我假设您将其放入包(JAR 中的路径)package1/package2 中,并且该文件名为 dump.jpg。在这种情况下,您可以致电:
setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/package1/package2/dump.jpg")));
getClass().getResource(...) 返回类路径上资源的 URL。您在类路径中以“/”开始路径,并使用资源的完整路径/包,以“/”分隔。
这是处理 JAR 应用程序中所有图像和图标的最佳方式。
将所有图像和图标压缩到自己的 JAR 文件中后 - 通过将图像 JAR 文件添加到库选项卡中来配置构建路径,以便它现在包含在类路径中。
然后只需在构造函数的开头使用以下 3x 行代码 即可访问任何所需的图像,包括不接受简单 ImageIcon 作为其主图标的 SystemTray 图像(我知道很奇怪)。 3x 行是:
URL iconUrl = this.getClass().getResource("/image-iconb.png");
Toolkit tk = this.getToolkit();
someimgicon = tk.getImage(iconUrl);
(someimgicon 只是一个声明 Image 变量的构造函数) 现在您可以设置窗口图标,就像这样简单:
setIconImage(someimgicon);
通过声明设置系统托盘图标时,和同时使用相同的变量:
trayIcon = new TrayIcon(someimgicon, "SystemTray Demo", popupMenu);
上述内容使您可以轻松、集中地声明图像或图像图标,而无需冒将图像资源保存在正确位置的风险。它保持整洁,JAR 包含在运行时自动编译的所有图像以及程序的分发。
作为奖励,一旦 JAR 在您的类路径中注册 - 您可以随时将任何其他图像添加到同一个 JAR 中,而无需任何大惊小怪 - 一切正常,添加的图像立即可用于您的应用程序。
我认为好多了。
首先在Source Packages下创建一个包(比如图片)
将所有图像复制到此包中(当您创建包时,将在项目 src 文件夹中创建一个以您的包名称命名的文件夹,因此将图像复制到其中)
您可以从程序中访问您的图像:
示例1:
this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/images/yourimagename")));
示例2:
URL imageurl = getClass().getResource("/images/imagename");//assuming your package name is images
Image myPicture = Toolkit.getDefaultToolkit().getImage(imageurl);
JLabel piclabel = new JLabel(new ImageIcon( myPicture ));
piclabel.setBounds(0,0,myPicture.getWidth(null),myPicture.getHeight(null));
现在使用这个 JLabel 图片标签
有很多方法,例如在你的 jar 文件中创建一个名为 resources 的文件夹,并使用相对路径从那里引用你的图像....
在 netbeans 8.1 中,我所做的是将名为 Resources 的图标和其他图像的文件夹包含在项目文件的 src 文件夹中。因此,每当我构建 Jar 文件时,文件夹都会包含在那里。文件树应该是这样的:
- src(源码包中的Java文件在这里)
** 您在项目中指定的包**
- 文件.java
资源
- 图片.jpg
代码应该是这样的:
jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));
将图像添加到 jar 中作为资源,然后(假设 jar 位于类路径上),使用类加载器将其作为流加载。
执行此操作的简单方法是将图像所在的文件夹与 jar 文件并行。示例:
在代码中这样调用图像:
pic = new ImageIcon("Pics/buttonpic.jpg");
这意味着您的图片将被称为“buttonpic”,并且位于项目目录中名为“Pics”的文件夹中。现在,创建 jar 文件后,将该 Pics 文件夹复制到 jar 文件所在的同一文件夹中。
示例:如果您的 jar 文件位于桌面上,则将 Pics 文件夹放在桌面上。现在,当您运行 jar 文件时,您的图片将正常工作。现在,为了掩盖您需要将 Pics 文件夹放在 jar 文件旁边的事实,您可以创建一个新文件夹并将 jar 和 Pics 文件夹放入该文件夹中。然后右键单击该 jar 并创建一个快捷方式,然后将该快捷方式放置在桌面上或您只想放置 jar 文件的位置,并将您创建的新文件夹放置在您想要隐藏它的位置。