Как правильно получить изображение из папки "Ресурсы" в 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).
Что я делаю неправильно, и как я могу правильно получить это изображение?
Ответы
Ответ 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.
Чтобы получить доступ к ресурсам:
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"));