Parece que hay dos preguntas aquí:
¿Cómo hago para que NetBeans incluya un archivo de imagen en el contenedor producido cuando construyo mi proyecto?
¿Cómo accedo a un archivo de imagen desde un contenedor?
Esta respuesta se aplica a NetBeans 6.8 y se dirige a las dos preguntas.
Supongamos que tiene un Proyecto de aplicación Java basado en hormigas.
Aquí está la vista 'Archivos' del proyecto
JP
+ images
+ test.jpg
+ nbproject
+ src
+ jp
+ Main.java
+ test
+ build.xml
+ manifest.mf
Dentro de su Main.java usted tiene un código como éste:
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());
Al ejecutar este proyecto desde el interior de NB se obtiene este salida:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
Cuando se ejecuta el código en el frasco lleno, se obtiene algo como esto:
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
para conseguir algo mejor cuando se ejecuta el frasco, que tiene que hacer lo siguiente:
Añadir el directorio de imágenes como una raíz de origen para su proyecto.
Haga clic con el botón derecho en el proyecto y seleccione el elemento Propiedades. Aparecerá un cuadro de diálogo.
Seleccione 'Fuentes' en la lista que se encuentra en el lado izquierdo del cuadro de diálogo. Esto cambiará el contenido del panel en el lado derecho del diálogo.
Presione el botón 'Agregar carpeta ...' que aparece junto a la tabla 'Carpetas de paquetes de origen'. Aparecerá un FileChooser.
Utilice este selector para seleccionar la carpeta de imágenes y presione el botón OK. Se agregará una entrada para la carpeta de imágenes.
Utilice el botón Aceptar en el cuadro de diálogo Propiedades del proyecto para aceptar los cambios y cerrar el cuadro de diálogo.
Cambie su código para usar 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);
Al ejecutar el proyecto desde dentro del IDE, debería ver algo como esto:
/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg true
file:/export/home/vkraemer/NetBeansProjects/JavaApplication2/images/test.jpg
Cuando se ejecuta el código de lleno en el frasco, se llega algo como esto:
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
Después de obtener la dirección del archivo test.jpg, puede utilizar ImageIcon(URL) para crear el icono
Mira mi respuesta aquí [Para la adición de imágenes e iconos en archivos JAR] (http://stackoverflow.com/a/42084902/7199218) en el columpio componentes. –