Подтвердить что ты не робот

Как правильно получить изображение из папки "Ресурсы" в NetBeans

У меня есть проект Java в NetBeans 7.0.

Я хочу добавить некоторое изображение на ярлык динамически. Изображение будет отличаться в зависимости от состояния программы.

Я разместил одно такое изображение "fill.jpg" в папке "Ресурсы" моего проекта.

Я хочу достичь этого файла правильно (не по абсолютному или относительному пути, потому что это вызовет проблемы при создании файла jar).

Итак, я нашел этот метод:

ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);

Он продолжает давать мне java.lang.NullPointerException. Но я уверен, что есть этот образ, потому что я могу назначить изображение метке из меню свойств NetBeans для этой метки (но я не хочу этого, я хочу добавить изображение с помощью кода Java).

Что я делаю неправильно, и как я могу правильно получить это изображение?

4b9b3361

Ответ 1

Спасибо, Valter Henrique, с вашим советом я понял, что я просто ввел неправильный путь к этому изображению. В одной из моих попыток я использую

    String pathToImageSortBy = "resources/testDataIcons/filling.png";
    ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));

Но правильным способом было использование имени моего проекта в пути к ресурсу

String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));

Ответ 2

Это было больно, используя NetBeans IDE 7.2.

  • Вам нужно помнить, что Netbeans очищает папку Build при каждом восстановлении, поэтому
  • Добавьте папку ресурса в папку src:

    • (проект)
      • ЦСИ
        • папка пакета проекта (содержит .java файлы)
        • ресурсы (независимо от названия)
        • изображения (дополнительные подпапки)
  • После очистки/сборки эта структура передается в папку "Создать":

    • (проект)
      • построить
        • классы
          • папка пакета проекта (содержит сгенерированные файлы .class)
          • ресурсы (ваши ресурсы)
          • изображения (ваши дополнительные подпапки)

Чтобы получить доступ к ресурсам:

dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/images/logo.png")));

и

if (common.readFile(getClass().getResourceAsStream("/resources/allwise.ini"), buf).equals("OK")) {

работал у меня. Обратите внимание, что в одном случае есть ведущее "/", а в другом - нет. Таким образом, корнем пути к ресурсам является папка классов "в папке сборки.

Дважды щелкните файл исполняемого файла jar в папке dist. Путь к ресурсам все еще работает.

Ответ 3

У меня есть несколько иной подход, который может быть полезным/более полезным для некоторых.

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

  • Папка проекта
    • построить
    • расстояние
    • Lib
    • nbproject
    • Ресурсы
    • ЦСИ

Перейдите к свойствам вашего проекта. Вы можете сделать это, щелкнув правой кнопкой мыши на своем проекте в окне вкладки "Проекты" и выбрав "Свойства" в раскрывающемся меню.

Под категориями слева выберите Sources.

В папках исходного пакета с правой стороны добавьте папку ресурсов с помощью кнопки "Добавить папку". После того, как вы нажмете "ОК", вы увидите папку "Ресурсы" в вашем проекте.

введите описание изображения здесь

Теперь вы можете извлекать ресурсы, используя эту линию или аналогичный подход:

MyClass.class.getResource("/main.jpg");

Если вам нужно создать пакет под названием "Изображения" в папке "Ресурсы", вы можете получить ресурс следующим образом:

MyClass.class.getResource("/Images/main.jpg");

Ответ 4

Для меня это работало, как будто у меня были изображения в папке icons под src и я написал ниже код.

new ImageIcon(getClass().getResource("/icons/rsz_measurment_01.png"));