Foros del Web » Programación para mayores de 30 ;) » Java »

Imágenes cacheadas en un JLabel

Estas en el tema de Imágenes cacheadas en un JLabel en el foro de Java en Foros del Web. Hola, estoy teniendo un problema bastante raro, lo que pasa es lo siguiente: Tengo un JLabel que se llama label, entonces hago: label.setIcon("nombre_imagen"); Ahora descargo ...
  #1 (permalink)  
Antiguo 25/11/2011, 05:13
 
Fecha de Ingreso: agosto-2010
Mensajes: 56
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Imágenes cacheadas en un JLabel

Hola, estoy teniendo un problema bastante raro, lo que pasa es lo siguiente:

Tengo un JLabel que se llama label, entonces hago:

label.setIcon("nombre_imagen");

Ahora descargo de Internet una imagen nueva y la llamo de la misma manera que la anterior, y cuando la descarga termina, aún dejando unos segundos más por si estuviera terminando de guardarla, vuelvo a hacer:

label.setIcon("nombre_imagen");

Pero la imagen que muestra es la anterior, a pesar de que ya no existe porque ha sido sobreescrita por la nueva. De hecho, mientras la aplicación está mostrando la anterior, voy a través del explorador de Windows y abro la nueva, y efectivamente es la que tiene que ser, porque la antigua se ha sobreescrito.

He probado haciendo después de la descarga doLayout(), repaint(), y otros métodos por el estilo, pero sigue igual.

Sólo puedo pensar que se está cacheando la imagen y recuperándose de la caché a la hora de solicitarse un archivo con el mismo nombre. ¿Hay alguna manera de evitar esto?

Como curiosidad, de cada 10 veces aproximadamente que ejecuto, 1 lo hace bien y 9 mal...Osea que no siempre se comporta de la misma manera :S
  #2 (permalink)  
Antiguo 25/11/2011, 05:25
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Imágenes cacheadas en un JLabel

Hola:

No hay setIcon(String), sino setIcon(Icon). Cuando cambias el fichero... ¿estás asegurándote de crear una nueva instancia de Icon y que no estás reutilizando la antigua?

Un saludo.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 25/11/2011, 07:18
 
Fecha de Ingreso: agosto-2010
Mensajes: 56
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Imágenes cacheadas en un JLabel

Sí sí, fallo mío, en realidad estoy poniendo:

label.setIcon(new ImageIcon("nombre_imagen"));

Era por simplificar la explicación ;)

Edito: he comprobado el hash de la imagen con label.getIcon().hashCode() antes y después de la segunda asignación, y el hash cambia, pero no la imagen. Está cargando un archivo distinto pero no lo está actualizando gráficamente, en fin, me voy acercando al problema, o eso espero jeje

Última edición por dersir; 25/11/2011 a las 08:19
  #4 (permalink)  
Antiguo 25/11/2011, 09:26
 
Fecha de Ingreso: agosto-2010
Mensajes: 56
Antigüedad: 13 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Imágenes cacheadas en un JLabel

Vale, solucionado, lo pongo por si alguien tiene el mismo problema:

En vez de hacer:

Código Java:
Ver original
  1. label.setIcon(new ImageIcon("nombre_imagen"));

Hacer esto otro:

Código Java:
Ver original
  1. ImageIcon imagen = new ImageIcon("nombre_imagen");
  2. imagen.getImage().flush(); // ¡LÍNEA CLAVE!
  3.  
  4. label.setIcon(imagen);

Y ya se muestra actualizada =D

Etiquetas: cache, imagenes, jlabel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:27.