При использовании ImageIcon
и передавая ему String
, он ожидает, что параметр относится к File
.
От JavaDocs
Создает ImageIcon из указанного файла. ... Указанная строка может быть именем файла или файлом пути
Файлы и «ресурсы» - это разные вещи.
Вместо этого попробуйте использовать что-то больше, как ...
new ImageIcon(getClass().getResource("res/player.png"));
Предполагая, что res/player.png
находится в банке в стороне каталога res
.
В зависимости от отношения к классу пытается загрузить ресурс и местоположение ресурса, возможно, потребуется использовать
new ImageIcon(getClass().getResource("/res/player.png"));
вместо ...
Обновлено
Некоторые рекомендации , как указал EJP, вы должны быть готовы к тому, что ресурс не будет найден.
URL url = getClass().getResource("/res/player.png");
ImageIcon img = null;
if (url != null) {
img = new ImageIcon(url);
}
// Deal with null result...
И вы должны использовать ImageIO.read
для чтения изображений. Помимо того, что он поддерживает больше (и может поддерживать больше в будущем) графических форматов, он загружает изображение, прежде чем вернуться и бросает IOException
, если изображение не может быть прочитан ...
URL url = getClass().getResource("/res/player.png");
ImageIcon icon = null;
if (url != null) {
try {
BufferedImage img = ImageIO.read(url);
icon = new ImageIcon(img);
} catch (IOException exp) {
// handle the exception...
exp.printStackTrace();
}
}
// Deal with null result...
Пожалуйста показать код, который вы используете для загрузки ресурса. – dnault
Отправить код, нет фотографий ... – thst
Распакуйте банку и убедитесь, что «res» включен внутри. Убедитесь, что вы загружаете ресурсы с помощью 'Class # getResource' или' Class # getResourceAsInStream' – MadProgrammer