如何从项目文件夹中的 jlabel 上设置图像?

use*_*824 3 java swing jlabel embedded-resource imageicon

我正在尝试制作一个 Java 桌面应用程序。

我想在 上设置图像JLabel

我正在使用 NetBeans。

从我的项目文件夹中,我的目录结构是:

F:/>MARKET
    |
    |___src
    |
    |___lib
    |
    |___src
    |      |
    |      |__defaultpackage
    |                       |
    |                       demo.java
    |__images
            |
            |
            Logo1.png
Run Code Online (Sandbox Code Playgroud)

我使用了以下代码:

jLabel4 = new JLabel(new ImageIcon("images/Logo1.png"));
Run Code Online (Sandbox Code Playgroud)

它不起作用,我怎样才能得到我的输出?

Mad*_*mer 5

如果您希望将图像包含在 Jar 中,则需要将该images文件夹移动到该src目录中。

然后,这将要求您使用更像......

jLabel4 = new JLabel(new ImageIcon(getClass().getResource("/images/Logo1.png")));
Run Code Online (Sandbox Code Playgroud)

到加载图像。

如果您希望图像保留在程序 Jars 外部(并对文件系统保持打开状态),那么您需要确保程序的执行上下文位于项目文件夹的上下文中(与项目文件夹处于同一级别srcimages目录)。

这可以通过项目属性 -> 运行属性来完成。默认情况下,运行时,程序将从正在运行的项目文件夹的上下文中执行。

特性

如果您想使用外部资源,您可以做两件事来检查它们......

一,使用与要加载的外部资源相同的路径创建一个File并检查它是否存在......

 if (new File("images/Logo1.png").exists()) {...
Run Code Online (Sandbox Code Playgroud)

或者,如果您似乎无法让它工作,请检查您当前的运行上下文...

System.out.println(new File(".").getCanonicalPath());
Run Code Online (Sandbox Code Playgroud)

这将告诉您当前的工作目录(注意这会抛出一个IOException)。

您还可以使用系统属性user.dir

System.out.println(System.getProperty("user.dir"));
Run Code Online (Sandbox Code Playgroud)