2012-05-17 5 views
1

Как получить доступ к картинке в другой папке на Java? У меня есть серия изображений, и они меняются в зависимости от пользовательского ввода, что и есть для x.Как получить доступ к изображению в другой папке?

picture.setIcon(new ImageIcon("\\resources\\icons\\pictures\\"+x+".png")); 

Изображения расположены (от .class файлов) в ресурсы/иконки/фотографий, но приведенный выше код не работает. Значение x не является проблемой, так как оно работает должным образом. Я называю фотографии правильным способом?

+0

Фотографии находятся в classpath/некоторые где еще из файловой системы –

ответ

2

Я вызываю фотографии правильно?

Возможно, нет. Если они являются (внедренными) ресурсами приложения, они, как правило, находятся в Jar и недоступны через конструктор, основанный на String, ImageIcon (который ожидает, что String соответствует пути File).

Для встроенных ресурсов обращайтесь к ним по адресу URL.

URL urlToImg = this.getClass(). 
    getResource("/resources/icons/pictures/"+x+".png"); 
picture.setIcon(new ImageIcon(urlToImg)); 
0

Вы должны использовать косые черты вместо обратных косых черт, которые я считаю.

new ImageIcon("/resources/icons/pictures/"+x+".png") 

Это стандартный межплатформенный способ Java для обозначения путей к файлам ресурсов. Он по-прежнему работает в Windows - библиотека времени исполнения Java обрабатывает трансальцию для вас.

0

Изображения расположены (от .class файлов) в ресурсы/иконки/фотографий

Это проблема. Системе не интересует, где находится файл класса, но откуда вы вызываете программу.

Указание папки ресурсов через командную строку,

java -jar myJar.jar C:\\home\\of\\the\\images 

или через свойство

java -jar myJar.jar -DImageHome=/foo/bar/images 

или из файла свойств является наиболее гибким.

Если вы хотите поместить изображения в банку, используйте предложение Andrews, getClass() .getRessource ("...");

КПП: Я точно знаю, что косые черты переносимы. Обратные косые черты, афаик, нет.

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