(я обещал, что искал помощи, но чувствую, что не уверен, что искать, поэтому спрашиваю) Я пытаюсь получить изображение, чтобы использовать значок для jLabel.Идея в том, что я хочу, чтобы он менял значки всякий раз, когда метод createImageIcon
(приведенный ниже) возвращает true.Я продолжаю получать NPE Exception in thread "main" java.lang.NullPointerException
всякий раз, когда запускаю его.Я попытался «очистить и построить» (я использую NetBeans) исходные переменные:
protected static final ImageIcon ICON_ACTIVE = createImageIcon("images/Start_ACTIVE.png", "Card reader currently active.");
protected static final ImageIcon ICON_INACTIVE = createImageIcon("images/Start_NOTACTIVE.png", "Card reader currently active.");
метод createImageIcon
:
public static ImageIcon createImageIcon(String path, String description) {
java.net.URL imgURL = ClassLoader.getSystemResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.out.println("Couldn't find file: " + path);
return null;
}
}
И как я бы использовал егов основном: updateActiveCheck(true);
На всякий случай, вот иерархия папок: https://imgur.com/a/mNixoOl Синяя стрелка - это то место, где я сейчас работаю, красные стрелки указывают на папку, которую я пытаюсьчтобы получить изображения из.Я попытался изменить URL-адрес папки, чтобы получить его правильно, но я чувствую, что, возможно, не справился.Я стараюсь не называть полный путь URL-адреса, так как мне нужно, чтобы эта папка и все ее содержимое были подключены к USB в какой-то момент, поэтому вызов «C: / users ..» не будет хорошей идеей
Я застрял: <</p>
РЕДАКТИРОВАТЬ !:
Трассировка стека:
Exception in thread "main" java.lang.NullPointerException
at ams.UserInterface.updateActiveCheck(UserInterface.java:183)
at ams.UserInterface.main(UserInterface.java:160)
строка в UserInterface.java:183
:
ActiveCheck.setIcon(ICON_ACTIVE);
Часть этого метода:
public static void updateActiveCheck(boolean success) {
if(success) {
ActiveCheck.setIcon(ICON_ACTIVE);// = new ImageIcon("/images/Start_ACTIVE.png"););
}
else if(!success) {
ActiveCheck.setIcon(ICON_INACTIVE);
}
}
Строка в UserInterface.java:160
updateActiveCheck(true);
Что касается включаемых ресурсов, imgURL
возвращает фактический путь к изображениямкогда я System.out.print
им.Есть ли другой способ убедиться, что ресурсы включены?
РЕДАКТИРОВАТЬ 2: ActiveCheck
- это jLabel
, я работаю над пользовательским интерфейсом.Идея в том, что мне нужно было изменить значок / изображение этой переменной в зависимости от логического возврата updateActiveCheck
(true / false).ActiveCheck
определено как общедоступное.
ActiveCheck = new javax.swing.JLabel();
ActiveCheck.setIcon(newjavax.swing.ImageIcon(getClass().getResource("/images/Start_NOTACTIVE.png"))); // NOI18N
У меня возникла проблема, из-за которой я не смог использовать getClass().getResource()
для статических / нестатических ссылок, поэтому яб ClassLoader.getSystemResource()
.