Ответ 1
Кажется, здесь есть два вопроса:
-
Как мне заставить NetBeans включать файл изображения в банку, созданный при создании моего проекта?
-
Как получить доступ к файлу изображения из баннера?
Этот ответ применяется к NetBeans 6.8 и адресует оба подзапроса.
Предположим, что у вас есть проект приложений Java на основе ant.
Вот представление "Файлы" проекта
JP
+ images
+ test.jpg
+ nbproject
+ src
+ jp
+ Main.java
+ test
+ build.xml
+ manifest.mf
Внутри вашего Main.java у вас есть такой код:
public static void main(String[] args) throws IOException {
// find the file in the file system.. probably not a good idea
File f = new File("images/test.jpg");
System.out.println(f.getCanonicalPath()+" "+f.exists());
Когда вы запускаете этот проект из NB, вы получаете этот результат:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
Когда вы запускаете код, упакованный в банку, вы получаете что-то вроде этого:
bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.txt false
Чтобы получить что-то лучше, когда выполняется jar, вам необходимо сделать следующее:
Добавить каталог изображений в качестве исходного корня для проекта.
Щелкните правой кнопкой мыши проект и выберите элемент "Свойства". Появится диалоговое окно.
Выберите "Источники" в списке, который находится в левой части диалогового окна. Это изменит содержимое панели в правой части диалогового окна.
Нажмите кнопку "Добавить папку...", которая появляется рядом с таблицей "Пакеты исходных пакетов". Появится FileChooser.
Используйте этот выбор для выбора папки изображений и нажмите кнопку OK. Запись для папки с изображениями будет добавлена в таблицу.
Используйте кнопку "ОК" в диалоговом окне "Свойства проекта", чтобы принять изменения и отменить диалог.
Измените свой код, чтобы использовать Class.getResource().
public static void main(String[] args) throws IOException {
// find the file in the file system.. probably not a good idea
File f = new File("images/test.jpg");
System.out.println(f.getCanonicalPath()+" "+f.exists());
URL url = Main.class.getResource("/test.jpg");
System.out.println(url);
Когда вы запускаете проект из среды IDE, вы должны увидеть что-то вроде этого:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg
Когда вы запустите код, упакованный в банку, вы получите что-то вроде этого:
bash-3.2$ pwd
/export/home/vkraemer/nbhg/web-main
bash-3.2$ java -jar /export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar
/export/home/vkraemer/nbhg/web-main/images/test.jpg false
jar:file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/dist/JavaApplication2.jar!/test.jpg
После того, как вы получите URL-адрес файла test.jpg, вы можете использовать ImageIcon (URL) для создания значка