Java - Imagenes en Labels

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Imagenes en Labels

Publicado por Daniel (3 intervenciones) el 11/11/2020 18:50:58
Hola a todos,
Soy nuevo en el mundo de Java pero llevo mas de 10 años programando en C++ y Python, estoy usando NetBeans y estoy haciendo mis primeros pinitos con la GUI Swing de Java, haciendo un pequeño Formulario de ingreso.
Como os muestro en esta imagen.
2020-11-11_18-35

Y esta es la estructura de paquetes que tengo:

2020-11-11_18-38

El tema es que para que funcione debo poner la ruta absoluta a la imagen, de esta manera:
1
2
3
4
5
lblFondo.setIcon(new javax.swing.ImageIcon("/home/walex/Programacion/java/recursos/azul00escalada.jpg")); // NOI18N
blFondo.setToolTipText("");
lblFondo.setPreferredSize(new java.awt.Dimension(366, 550));
getContentPane().add(lblFondo);
lblFondo.setBounds(0, 0, 366, 560);

Si la coloco asi:
1
2
3
4
5
lblFondo.setIcon(new javax.swing.ImageIcon(setClass().getResource("/img/azul00escalada.png"))); // NOI18N
 lblFondo.setToolTipText("");
 lblFondo.setPreferredSize(new java.awt.Dimension(366, 550));
 getContentPane().add(lblFondo);
 lblFondo.setBounds(0, 0, 366, 560);

Al ejecutar me muestra el siguiente error:


2020-11-11_18-46

El tema es que las imágenes que use debo usarlas como externas al proyecto, poniendo la hubicacion absoluta. Podéis orientarme un poco?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Imagenes en Labels

Publicado por Tom (1831 intervenciones) el 12/11/2020 09:23:16
No me queda claro si debes o no usar imagénes externas al .jar.
En todo caso, una ubicación relativa (al .jar o al cwd) no comienza con '/', eso es un path absoluto.
.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Imagenes en Labels

Publicado por Daniel (3 intervenciones) el 12/11/2020 12:03:28
Hola Tom,
Si tienes razon en ls dos casos, lo IDeal es tener las imagenes en el "mismo JAR" y si el PATH empieza por "/" efectivamente yo tambien entiendo que la ruta es absoluta, y por eso es que hago la consulta, el tema es que Netbeans me la pone asi automáticamente y no me deja modificarla es que no entiendo bien el funcionamiento de NetBeans
Gracias por la respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imagenes en Labels

Publicado por Tom (1831 intervenciones) el 12/11/2020 12:27:17
Estas cosas funcionaban perfectamente en Netbeans ... no sé a partir de qué release dejaron de hacerlo. El problema, creo, es que cuando haces "run" desde netbeans no se usa el .jar sino las clases en el directorio classes. Esto hace que la carga de recursos no funcione igual.
En tu caso, efectivamente, al usar getResource() sí se debe especificar la / inicial, que indica el directorio raiz __dentro_del_jar__.

Lo que yo haría es primero conseguir que funcione desde el .jar; Si es necesario lánzalo desde un terminal y no desde netbeans.

En tu código veo que usas setClass() ... eso me parece erróneo. La carga la debes hacer con getClass().getResource()

Asegúrate de que en el .jar (ábrelo, no es más que un zip) existe el directorio img en el primer nivel (también, generalmente, se usa el directorio /resources y ahí dentro img ... icons ... fonts ...).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Imagenes en Labels

Publicado por Daniel (3 intervenciones) el 12/11/2020 14:46:08
Solucionado!!
Primero decir que uso la Ultima versión (al menos a dia de hoy 12/11/2020) de Netbeans la 12.1 , haciendo pruebas y viendo lo que me devolvía esto:


1
System.out.println(getClass().getResource(""))

que es lo siguiente:
1
file:/home/walex/NetBeansProjects/ejemLayout/target/classes/walexnet/ServiGes/

Y observe que me estaba devolviendo la ruta del <TARGET> y NetBeans me ejecuta el JAR directamente, y la carpeta img no la pone en el target, asi que copie la carpeta IMG al TARGET y Huala! funciono, y para mejor NetBeans, ya de manera automatica me agrega esa carpeta al JAR

Debe ser algo de la configuración del NBetBeans que desconozco.

Otra pregunta hay manera de decirle al NetBeasn que añada la linea:
1
Main-Class: walexnet.serviges.Inicio
Al Archivo MANIFEST:MF de manera automática?
Gracias a todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imagenes en Labels

Publicado por Tom (1831 intervenciones) el 12/11/2020 15:21:55
Sí, en la configuración del proyecto (en "Run") puedes especificar la clase principal, y netbeans la agrega en el manifest.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar