Java - Problemas con getResource

 
Vista:

Problemas con getResource

Publicado por aisbel (13 intervenciones) el 19/06/2009 22:25:08
Hola a todos,
tengo un problema que voy a intentar explicar.

Tengo un conjunto de imágenes, que son asignadas de la siguiente forma:

abajoIcon=new ImageIcon(getClass().getResource(t.elemUsuario.Item("Abajo").nombreImagen));

por ejemplo, donde

t.elemUsuario.Item("Abajo").nombreImagen

devuelve:

/Imagenes/EstiloAzul/arribaAzul.gif

Entonces, desde la interfaz, puedo cambiar esa imagen, que es escogida desde un JFileChooser

Y al cambiar esa imagen, quiero poner en elemento.nombreImagen:

File file = fch.getSelectedFile();
elemento.nombreImagen = file.getAbsolutePath();
ImageIcon tmpIcon= new ImageIcon(file.getPath());
elemento.Imagen = new ImageIcon(tmpIcon.getImage());

la ruta correcta para que me la coja al hacer
abajoIcon=new ImageIcon(getClass().getResource(t.elemUsuario.Item("Abajo").nombreImagen));

tanto para las imagenes que han sido cambiadas, como para las que no (para las rutas relativas, y para las absolutas).

He probado, como he puesto arriba a poner:
elemento.nombreImagen = file.getAbsolutePath();

Pero no encuentra la imagen de esa forma al hacer getResource, aunque la imagen sí la asigna correctamente.

Qué es lo que tengo que poner en nombreImagen para que me coja la imagen al hacer getResource?

Espero que me haya explicado bien, es difícil de explicar.

Muchas gracias de antemano :)
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

RE:Problemas con getResource

Publicado por James (207 intervenciones) el 21/06/2009 04:29:36
Pues en ese caso talves no deberias usar rutas relativas, otra cosa no me queda claro a que te refieres con "la imagen sí la asigna correctamente.", talves te refieres a cuando la obtienes del JFileChosser.

En todo caso deberias evaluar la portabilidad del sistema, en ese caso debes usar getResource(), [ero tu problema persistira pues trata de bris la imagen desde una ubicaion donde no existe, si la imagen es importante para el sistema talves deberias evaluar la posibilidad de copiar esa imagen al directorio donde estan el resto de tus imagenes y luego tranquilamente funcionaria con getResource, claro ya no guaradarias como nombre de la imagen todo el path, Suerte.
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

RE:Problemas con getResource

Publicado por aisbel (13 intervenciones) el 21/06/2009 09:40:41
Muchas gracias por responder.
Al decir que la imagen sí la asigna correctamente me refería a que al crear la imagen:

ImageIcon tmpIcon= new ImageIcon(file.getPath());
elemento.Imagen = new ImageIcon(tmpIcon.getImage());

La crea correctamente, pero luego cuando la intento mostar con getResource, no llego a poner bien la ruta.
Lo que me has dicho de la portabilidad, las imágenes elegidas en la última configuración se cargarán si existen todavía en esa ruta. Si cualquier imagen falla al ser cargarda porque ha sido eliminada o movida a otro sitio, se cargarían las imágenes por defecto que tengo con rutas relativas.

Es por eso por lo que necesitaba cogerlas con getResource, porque no sé si son relativas o absolutas.
A ver cómo lo puedo solucionar, ya que es de las últimas cosas que me quedan para acabar mi proyecto y no consigo resolver :S
Si alguien tiene alguna idea de cómo solucionar este problema, que lo diga.

Muchas gracias
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

RE:Problemas con getResource

Publicado por James (207 intervenciones) el 22/06/2009 18:05:34
GetResource esta bien par las imagenes propias del proyecto, pero no puedes con las demas, eso es calro, deberias poder una bandera que te diga si la imagen es propia del proyecto o externa y usar o no getResource segun el caso, calro no la mejor manera pero es la forma mas rapida, como dije la otra opcion seria crearte una copia de la imagen al proyecto, asi si borran o mueven la original tienes la del proyecto, bueno se me ocurren un par de formas mas pero no lo he probado, dejame reviso y te cuento, Suerte
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

RE:Problemas con getResource

Publicado por aisbel (13 intervenciones) el 22/06/2009 18:09:15
Al final lo que he hecho es copiarlas al proyecto, si no existen se copian.
Y luego todas se cogen con getResource.
No sé si es la mejor forma, pero la he visto la más rápida de resolver, ya que no tengo mucho tiempo.

Muchas gracias, si se te ocurren otras soluciones, me lo dices y las miraré.

Gracias :)
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