JLabel图标未在带有Maven项目的Java上正确导入

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

我正在GUI库系统上创建项目。我的IDE是Netbeans。在从外部文件夹设置Jlabel图标图像之前,但我希望从项目文件夹中加载图像,因此我从NetBeans的“导入到项目”选项将图像导入到了我的项目文件夹中。当我编译程序时,它在Jlabelxxx.setIcon()中显示“ NullPointerException”。这意味着它没有从我的包裹/文件夹中加载图像。我知道什么是空指针异常:)。我的代码完全正常,但我不知道为什么无法从项目文件夹中加载图像。

我正在使用Netbeans GUI进行Jswing设计。我的目录结构如下所示:

enter image description here

项目绝对路径:C:\ Users \ nisha \ Documents \ NetBeansProjects \ LibraryManagementSystem

图像绝对路径:C:\ Users \ nisha \ Documents \ NetBeansProjects \ LibraryManagementSystem \ src \ main \ java \ gpjlibrarymanagementsystem \ icons

我在“ LibraryManagementSysten”项目文件夹中有2个软件包。在它下面,我有3个程序包“”“ gpjlibrarymanagementsystem”“ gpjlibrarymanagementsystem.icons”。默认软件包没有任何内容。第二个包含JFrame文件,最后一个包含图像。请观看上面发布的图像,以了解我的目录结构。

我试图在同一个项目中创建不同的目录,但是它不起作用。

我得到'NullPointerException'的代码示例:

    lblMinimize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gpjlibrarymanagementsystem/icons/icons8-minus-24.png")));

    lblMaximize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gpjlibrarymanagementsystem/icons/icons8-maximize-button-20.png")));

    lblClose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/gpjlibrarymanagementsystem/icons/icons8-multiply-24.png")));

根据我的目录结构,您可以看到我的代码是正确的。

java swing jlabel embedded-resource imageicon
3个回答
0
投票

以下一项或多项:

/gpjlibrarymanagementsystem/icons/icons8-minus-24.png
/gpjlibrarymanagementsystem/icons/icons8-maximize-button-20.png
/gpjlibrarymanagementsystem/icons/icons8-multiply-24.png

错误(文件不存在),因此getResource返回null


0
投票

项目目录名称(见下文)为icon(单数,但代码显示为icons(复数)。

enter image description here


0
投票

我已经解决了这个问题。图像应添加到资源文件夹中,该文件夹为:[[您的项目名称\ src \ main \ resources。就我而言:LibraryManagementSystem \ src \ main \ resources \ icons。所有图像文件都在图标文件夹中:)

在maven中,文件结构应如下所示:

> Project |-- pom.xml `-- src > `-- main > `-- resources

但是,您的所有资源可能不在src / main / resources中。因此,您必须通过将以下内容添加到POM中来指定这些目录。

<project> ... <build> ... <resources> <resource> <directory>[your folder here]</directory> </resource> </resources> ... </build> ... </project>

因此,如果您的资源位于src / my-resources中

Project |-- pom.xml `-- src `-- my-resources

您可以通过执行以下操作来指定该目录:

... <resources> <resource> <directory>src/my-resources</directory> </resource> </resources> ...

此外,您可以通过添加多个元素来拥有多个目录:

... <resources> <resource> <directory>resource1</directory> </resource> <resource> <directory>resource2</directory> </resource> <resource> <directory>resource3</directory> </resource> </resources> ...

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