将图像添加到 JAR Java

问题描述 投票:0回答:7

我在

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

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

我已经这样做了。

java jar resources
7个回答
46
投票

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

第二步:从您的程序访问该文件。我假设您将其放入包(JAR 中的路径)package1/package2 中,并且该文件名为 dump.jpg。在这种情况下,您可以致电:

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

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


7
投票

这是处理 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 中,而无需任何大惊小怪 - 一切正常,添加的图像立即可用于您的应用程序。

我认为好多了。


3
投票

首先在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 图片标签


1
投票

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


1
投票

在 netbeans 8.1 中,我所做的是将名为 Resources 的图标和其他图像的文件夹包含在项目文件的 src 文件夹中。因此,每当我构建 Jar 文件时,文件夹都会包含在那里。文件树应该是这样的:

  • src(源码包中的Java文件在这里)
  • ** 您在项目中指定的包**

    • 文件.java
  • 资源

    • 图片.jpg

代码应该是这样的:

jToggleButton1.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("/resources/image.jpg")));

0
投票

将图像添加到 jar 中作为资源,然后(假设 jar 位于类路径上),使用类加载器将其作为流加载


-2
投票

执行此操作的简单方法是将图像所在的文件夹与 jar 文件并行。示例:

在代码中这样调用图像:

pic = new ImageIcon("Pics/buttonpic.jpg");

这意味着您的图片将被称为“buttonpic”,并且位于项目目录中名为“Pics”的文件夹中。现在,创建 jar 文件后,将该 Pics 文件夹复制到 jar 文件所在的同一文件夹中。

示例:如果您的 jar 文件位于桌面上,则将 Pics 文件夹放在桌面上。现在,当您运行 jar 文件时,您的图片将正常工作。现在,为了掩盖您需要将 Pics 文件夹放在 jar 文件旁边的事实,您可以创建一个新文件夹并将 jar 和 Pics 文件夹放入该文件夹中。然后右键单击该 jar 并创建一个快捷方式,然后将该快捷方式放置在桌面上或您只想放置 jar 文件的位置,并将您创建的新文件夹放置在您想要隐藏它的位置。

© www.soinside.com 2019 - 2024. All rights reserved.