Java - Actualizar JFrame sin parpadeo

 
Vista:

Actualizar JFrame sin parpadeo

Publicado por Fran_p1 (6 intervenciones) el 11/08/2006 20:21:18
Tengo una ventana JFrame dividida en varios paneles en los cuales voy insertando una imagen que según la tecla que pulso quiero que de la sensación de que se mueve.
Por ahora lo he conseguido dividiendo de nuevo la ventana en los paneles que necesito y agregando el panel con la imagen pero como comprenderéis esto es una solucion un poco cutre que me produce mucho parpadeo en la pantalla porque cada vez que hago un cambio de este tipo tengo que poner la ventana a falso y despues volver a ponerla verdadero para que se vean los cambios.
¿Podria hacer que la ventana se fuera actualizando automáticamente cn cada cambio de panel sin tener que cerrarla y volverla abrir?
Un saludo.
Gracias.
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:Actualizar JFrame sin parpadeo

Publicado por German17 (2 intervenciones) el 31/08/2006 19:36:17
Hola, la solución es muy simple.

Swing tiene una clase Abstracta llamada SwingUtilities, esta clase permite la actualización de los gráficos de un componente, básicamente lo que hace es un repintado
del componente y todos los que se encuentren dentro de él en caso de ser un Container.

Mira en este momento estoy en Ciber y no tengo java a la mano, estoy esperando el download de un programa, pero voy a mencionar unas pautas, espero que te sirva

import javax.swing.*;

public class MiJFrame extends JFrame{

public MiJFrame(){
super("Esta ventana es de muestra");

setSize(800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}

/* Este es el método que te interesa*/

prublic void actualizarPantalla(){
SwingUtilities.updateTreeUI(this);
this.validateTree();
}

}

mira no estoy seguro si el JFrame posee el método validateTree(), si no lo tiene, haz lo siguiente

prublic void actualizarPantalla(){
JPanel temp=this.getContentPane();
SwingUtilities.updateTreeUI(temp);
temp.validateTree();
}

ahí si estoy seguro, el validateTree() es un complemento para el repintado de la ventana. Estos métodos se los puede utilizar cuando cambies de LookAndFeel en tiempo de Ejecucion.
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:Actualizar JFrame sin parpadeo

Publicado por kelwin (1 intervención) el 06/09/2011 23:28:38
Tu post esta tremendo a pesar de ser simple....era justo lo que estaba buscando .. gracias por la ayuda
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:Actualizar JFrame sin parpadeo

Publicado por Juan Carlos (1 intervención) el 12/08/2012 22:41:53
Comparto el comentario: a pesar de ser un post pequeño y sencillo, es tremendo y de mucha utilidad. Yo estaba usando el método paintAll() de mi JFrame para mostrar unos componentes, pero visualmente es incómodo para quien lo percibe; de la forma en que propones el refresco se hace sin ser notado 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:Actualizar JFrame sin parpadeo

Publicado por Juan Daniel Elejalde (1 intervención) el 15/10/2012 05:20:56
Hola (solo quiero dar las gracias)

de verdad te agradezco por la respuesta tan maravillosa que nos acabas de dar, no sabia que hacer con mi ventana JFrame ya que era un trabajo que tenia que entregar y urgente y gracias a ti pude corregir este problema que tenia.

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