2015-03-13 2 views
1

Я пытаюсь создать экземпляр ImageIcon согласно инструкциям здесь (http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html)Как создать экземпляр ImageIcon

/** Returns an ImageIcon, or null if the path was invalid. */ 
protected ImageIcon createImageIcon(String path, 
              String description) { 
    java.net.URL imgURL = getClass().getResource(path); 
    if (imgURL != null) { 
     return new ImageIcon(imgURL, description); 
    } else { 
     System.err.println("Couldn't find file: " + path); 
     return null; 
    } 
} 

У меня есть изображение в той же папке, что и класс Java, но возвращает «Не удалось найти файл: .....». Что мне делать?

ответ

1

Class.getResource() предназначен для доступа к материалам через загрузчик классов, например. вещи в том же банке, что и ваше приложение.

Чтобы получить доступ к файлу из файловой системы, создайте URL-адрес из файла, например. new File(path).toURI().toURL();

+0

поэтому я должен изменить код, подобный этому http://pastebin.com/gXzuTi58? – Alda

+0

вы также можете использовать новый ImageIcon (путь, описание), как описано здесь: http://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html#ImageIcon(java. lang.String,% 20java.lang.String) –

+0

Это работает, но на самом деле это неправильный способ загрузки Java-значка, входящего в состав приложения. Alda должен использовать Class.getResource, особенно если файл уже находится в том же каталоге, что и класс. – VGR

Смежные вопросы