Приложение Java Swing не может найти изображение - PullRequest
0 голосов
/ 17 апреля 2010

Я делаю торпедную игру для школы в Java с Swing Gui, пожалуйста, посмотрите архивированный источник ЗДЕСЬ .

Я использую пользовательские значки кнопок и курсоры мыши для изображений, хранящихся в подпапках папки / bin / resource / graphics / default, где корневая папка является корневой папкой программы (она также будет корневой в финальном .jar. Предположим, что кроме «bin» содержит «главную» папку со всеми классами. Относительный путь к ресурсам хранится в переменных shipPath и mapPath MapStruct.java. Теперь класс PutPanel в Battlefield.java находит их все в порядке и хорошо настраивает значки своих кнопок, но любой другой класс не может получить свои значки, например, SetCursor Table.java, который должен установить курсор мыши для всех его элементов для изображения выбранного корабля или this.button.setIcon (icon) Field.java; в конструкторе, который должен установить значок для кнопок «вода».

Я смотрел с отладкой, что происходит, и изображения остаются нулевыми после загрузки, хотя пути кажутся правильными. Я также пытался записать тестовый файл в папку с изображениями, но метод возвращает исключение filenotfound. Я попытался найти путь к классу, чтобы увидеть, работает ли он в предполагаемом месте, и кажется, что так оно и есть, поэтому я действительно не могу найти проблему сейчас.

Может ли кто-нибудь помочь мне? Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2010

Вам необходимо загрузить значки, подобные этой:

ClassLoader cl= this.getClass().getClassLoader();
URL imageURL   = cl.getResource("resources/...");
ImageIcon icon = new ImageIcon(imageURL);

И вам нужно добавить папку ресурсов в путь к классам в Eclipse.Обратите внимание, что путь - это не путь к файлу, поэтому он будет работать, если вы решите объединить свое приложение в файл jar.

0 голосов
/ 09 декабря 2015
btnRegistration.setIcon(createImageIcon("reg.png"));

protected ImageIcon createImageIcon(String path) {
    java.net.URL imgURL = Master.class.getClassLoader().getResource(path);
    if (imgURL != null) {
    return new ImageIcon(imgURL);
    } else {
    System.out.println("Couldn't find file: " + path);
    return null;
    }
}

здесь btnRegistration мой JButton Мастер мой класс и reg.png - мое изображение, принадлежащее моему проекту

...