Значок JLabel неправильно импортирован на Java с проектом Maven - PullRequest
0 голосов
/ 06 ноября 2019

Я делаю проект в библиотечной системе GUI. Моя IDE - Netbeans. До того, как я установил изображения значков Jlabel из внешних папок, я хотел, чтобы изображения загружались из папки проекта, поэтому я импортировал изображения в папку своего проекта из опции импорта в проект NetBeans. Когда я скомпилировал программу, она показывает «NullPointerException» в Jlabelxxx.setIcon (). Это означает, что он не загружает изображения из моего пакета / папки. Я знаю, что такое исключение нулевого указателя :). Мой код полностью в порядке, но я не знаю, почему изображения не загружаются из папки проекта.

Я использую графический интерфейс Netbeans для создания дизайна Jswing. Моя структура каталогов показана ниже:

enter image description here

Абсолютный путь к проекту: C: \ Users \ nisha \ Documents \ NetBeansProjects \ LibraryManagementSystem

Абсолютный путь к изображениям: C: \ Users \ nisha \ Documents \ NetBeansProjects \ LibraryManagementSystem \ src \ main \ java \ gpjlibrarymanagementsystem \ icons

У меня есть 2 пакета в папке проекта "LibraryManagementSysten". Ниже у меня есть 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")));

Вы можете видеть, согласно моей структуре каталогов, мой код правильный.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2019

Имя каталога проекта (см. Ниже) - icon (единственное число), но в коде указано: icons (множественное число).

enter image description here

0 голосов
/ 06 ноября 2019

Я решил эту проблему. Изображения должны быть добавлены в папку ресурсов: yourprojectname \ 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>
   ...
0 голосов
/ 06 ноября 2019

Один или несколько из:

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

неверен (файл не существует), поэтому getResource возвращает null.

...