2010-05-16 15 views
7

¿Es posible el doble búfer (en java) con awt? Actualmente, soy consciente de que swing no se debe usar con awt, así que no puedo usar BufferStrategy ni nada (ya tengo escrito un código en awt que no quiero reescribir en swing).Doble búfer con awt

Si el doble buffering es posible con awt, ¿tengo que escribir el buffer manualmente? A diferencia del swing, awt no parece tener la misma capacidad incorporada de doble buffering.

Si tengo que escribir el código a mano, ¿hay un buen tutorial para mirar? ¿O es más fácil/aconsejable que un programador principiante use swing en su lugar?

Disculpe la pregunta de varios pasos. Gracias por su tiempo :)

Respuesta

6

Esto se responde fácilmente en la web. Simplemente busque "doble buffer awt" y encontrará MUCHOS ejemplos. Incluso puedes ver an old example que escribí en 1998 en Java 1.0 AWT. Solo necesita crear una instancia de su propio objeto Graphics y dibujar en una imagen, luego biselar esa imagen en un lienzo. Aquí está el código clave en mi ejemplo:

public void paint(Graphics g) { 
    if (doubleBuffer) { 
     paintSky(top.gBuf); 
     g.drawImage(top.buf, 0, 0, this); 
    } else { 
     paintSky(g); 
    } 
    } 
+1

Yo diría que es recomendable reutilizar la implementación del columpio si es posible. – aioobe

+0

Cariño, no puedo ejecutar el código, porque el método newStuff() no está allí. D: – exodrifter

+0

@DDP: eh, bueno, eso es extraño. Obviamente, no he intentado compilar ese código en una década ... El código compilado se ejecuta como un applet aquí: http://www.astro.wisc.edu/~dolan/java/Constellations.html por lo que la fuente I vinculado no debe ser la versión correcta. –