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

Imágenes solo refrescan redimensionando la pantalla

Estas en el tema de Imágenes solo refrescan redimensionando la pantalla en el foro de Java en Foros del Web. Hola, he creado un programa que muestra un JPanel compuesto por 5x5 imágenes que a los 4 segundos se recarga con otras 5x5 imágenes distintas. ...
  #1 (permalink)  
Antiguo 04/01/2010, 11:35
 
Fecha de Ingreso: abril-2004
Mensajes: 43
Antigüedad: 20 años
Puntos: 0
Pregunta Imágenes solo refrescan redimensionando la pantalla

Hola,

he creado un programa que muestra un JPanel compuesto por 5x5 imágenes que a los 4 segundos se recarga con otras 5x5 imágenes distintas.

El programa funciona bien, pero solamente se ven las imágenes del JPanel si se redimensiona la ventana.

¿Alguien sabe cual es el problema?

Aquí dejo el código fuente:

import java.awt.*;
import java.lang.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;


public class MatrizImagenes extends JFrame
{
int MatrizPiezas[][] = new int[5][5];
JLabel Pieza[][] = new JLabel[5][5];
JPanel PanelPiezas=new JPanel(new GridLayout(5,5));


MatrizImagenes()
{
// Propiedades de la ventana
setResizable(true);
setSize(590,484);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}


public void DibujarPiezasEnPanel()
{
ImageIcon im_color1 = new ImageIcon("imagenes/001c1.GIF");
ImageIcon im_color2 = new ImageIcon("imagenes/001c2.GIF");

for (int i=0; i<5; i++)
for (int j=0; j<5; j++)
{
Pieza[i][j]=new JLabel();
Pieza[i][j].setIcon(im_color1);
PanelPiezas.add(Pieza[i][j]);
}

add(PanelPiezas,"Center");


try { Thread.sleep(4000); }
catch (InterruptedException e){ }

PanelPiezas.removeAll();

for (int i=0; i<5; i++)
for (int j=0; j<5; j++)
{
Pieza[i][j]=new JLabel();
Pieza[i][j].setIcon(im_color2);
PanelPiezas.add(Pieza[i][j]);
}

try { Thread.sleep(4000); }
catch (InterruptedException e){ }

PanelPiezas.removeAll();

}

public static void main (String [] args)
{
MatrizImagenes tq = new MatrizImagenes();
while (true){ tq.DibujarPiezasEnPanel();}
}

}


Gracias y un saludo,

Nacho
  #2 (permalink)  
Antiguo 04/01/2010, 14:01
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: Imágenes solo refrescan redimensionando la pantalla

probaste usar pack(), repaint(), o usar el Container del Frame?
this.getContainer().....
alguno de estos tiene que reacomodar los componentes y el layout
a mi me funciona casi siempre pack();

PD: estos métodos se usan pos agregado de componentes.

tambien podés probar en vez de .removeAll(); insertar encima (redefinir los Panels)

Última edición por FiruzzZ; 04/01/2010 a las 17:14
  #3 (permalink)  
Antiguo 04/01/2010, 14:46
 
Fecha de Ingreso: marzo-2008
Mensajes: 39
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Imágenes solo refrescan redimensionando la pantalla

podrias utilizar

SwingUtilities.updateComponentTreeUI(this);

para actualizar el componente

Etiquetas: pantalla
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 07:10.