Uso del double-buffering software
Artículo por Club Developers · 31 May 2006
2395 vistas
La visualización por defecto de un componente awt, swing,... de Java se hace con la ayuda de un simple buffer. Si realizamos animaciones un tanto complejas, se producirán parpadeos de la imagen. Para evitar este problema podemos usar el método del double-buffering. Básicamente, esta técnica consiste en tener un buffer donde se dibuja en memoria y otro que se ocupa de mostrarlo en pantalla.
Veamos un programa sencillo que usa el double-buffering.
Veamos un programa sencillo que usa el double-buffering.
java
// bucle de mostrado RenderingThread renderingThread = new RenderingThread(); // buffer memoria (2do buffer) Graphics buffer; // image de memoria correspondiente al Image image; int x = 0; // coordenada x del texto public DoubleBufferingSoftware(){ // mostrado setSize( 400, 400 ); setVisible( true ); // iniciamos el buffer de mostrado renderingThread.start(); } paint(g); } // creación de un buffer si no existe if(buffer==null){ image = createImage(400,400); buffer = image.getGraphics(); } // dibujamos en el buffer de memoria buffer.fillRect( 0, 0, 400, 400 ); buffer.drawString( "mostrar una línea de texto", x, 200 ); x++; if(x>400) x = 0; // finalmente, el buffer de momoria se dibuja en el de mostrado g.drawImage(image, 0, 0, this); } /** * Este thread llama al repintado de nuestra ventana * cada 10 milisegundos */ public void run(){ while(true){ try { repaint(); sleep( 10 ); } } } }