Java - problema con los repaint

 
Vista:

problema con los repaint

Publicado por JOSE MANUEL (1 intervención) el 22/03/2006 10:39:38
HOla, mi problema es el siguiente:
en mi aplicacion tengo tengo cuatro paneles graficos scrollPanel en los cuales dibujo una serie de objetos graficos pero me ocurre que al poner
panel1.repaint();
panel2.repaint
panel3.repaint
panel 4.repaint
los dibuja el el orden que quiere,me explico,no dibuja el uno ,luego el dos ....y me es necesario q lo haga.
Igual una vez sale dos tres uno cuatro...q tres uno dos cuatro...aleatorio, y me supongo que es xq termina un panel y lo muestra aunque el anteriro todavia se este ejecutando.
lo e probado todo,bucles while con valores auxiliares para q asta q no llegue al final de la funcion paint n o perimita el siguiente,do while..cientos de cosas que he probado y nada.
Lo unico que qiero es q al dar a un buton,pinte el uno,dos tres cuatro.No se si con alguna funcion o con lo q sea pero me es imposible hacer q lo haga..
Un saludo
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:problema con los repaint

Publicado por chuidiang (950 intervenciones) el 22/03/2006 13:51:09
Hola:

repaint() lanza un aviso a la máquina virtual de que el panel necesita repintado. La máquina lo hace más adelante, cuando le viene bien. Por ello el orden de esta forma no está garantizado.

Aunque es un poco lioso, prueba de esta forma (tampoco puedo garantizarte que funcione, puesto que no la he probado).

SwingUtilities.invokeAndWait(new Runnable(
public void run()
{
panel1.repaint();
))

otro igual detrás para el panel2, otro para el 3 y otro para el 4

El invokeAndWait() hace que reapint() se ejecute en el hilo que tiene java para pintado, con lo que es inmediato. Tu código además espera a que se termine el repaint() antes de seguir, con lo que ya tienes el orden garantizado.

La pega de esto es que te quedas "colgado" hasta que acaben de repintarse los paneles.

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