Java - extends JPanel

 
Vista:

extends JPanel

Publicado por giovanni cantor (3 intervenciones) el 12/11/2005 18:03:32
Tengo una clase extends JPanel, creo una instancia de esta en un JFrame, y la quiero repintar cuando se presiona un boton, lo que pasa es que quiero repintarla 3 veces dentro del evento de oprimir el boton, pero el solo me muestra el ultimo repaint, y yo quiero que me muestre todos, coloque un delay para que me mostrara un repaint y luego el otro. pero igual solo me pinta el ultimo.

gracias a quien me pueda ayudar.
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
sin imagen de perfil

RE:extends JPanel

Publicado por chuidiang (950 intervenciones) el 13/11/2005 07:50:47
Hola:

Java tiene un hilo de tratamiento del ratón y de repintado de ventanas. Si pulsas un botón, el código de ese botón se realiza en el hilo de pintado. Si llamas a repaint(), java apunta que tiene que repintar el panel y lo hará en el hilo de pintado cuando esté libre.

Dicho de otra forma. Cuando pulsas el botón, ocupas el hilo de repintado, así que ningún repaint tendrá efecto hasta que tú termines el código del botón. Cuando termines, java hará tres repintados seguidos del panel, con los últimos datos o componentes que tú hayas metido.

Para solucionar esto, debes en la pulsación de botón meter tu código en un hilo aparte y hacer los delay oportunos. Es algo como esto

public void actionPerformed (ActionEvent e)
{
Runnable r = new Runnable ()
{
public void run ()
{
cambiarDatos();
repaint();
Thread.currentTherad().sleep(...);
cambiarDatos();
repaint();
Thread.currentTherad().sleep(...);
cambiarDatos();
repaint();
}
Thread t = new Thread(r);
t.start();
}
}

Al hacer el hilo, el método actionPerformed() termina casi inmediatamente, dejando el hilo de repintado libre.
Lo del Thread.currentThread().sleep(...) lo pongo de memoria. Es posible que no sea exactamente así y además hay que meterlos en un try-catch.

Se bueno
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:extends JPanel

Publicado por giovanni cantor (3 intervenciones) el 13/11/2005 20:31:10
quiero agradecer a chuidiang chuidiang@gmail.com quien me ayudo, ya que estaba hace tiempo intentando hacer esto.

Muchicimas 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