Habrás observado que los gráficos no se animan pefectamente -- ya que ocasionalmente alguna parte del área de dibujo parpadea notablemente. La siguiente página explica la causa del parpadeo y le explica como eliminarlo.
Aquí tienes el código del applet. La mayor diferencia entre este y la plantilla de animación es que el método paint() ha cambiado para dibujar rectángulos rellenos, usando un algoritmo que depende del número de marco actual. Este applet también introduce un par de variables de ejemplar, una que contiene el tamaño del cuadrado y otra que mantiene la pista de si la siguiente columna que será dibujada con un cuadrado negro. El usuario puede seleccionar el tamaño del cuadrado mediante un nuevo parámetro del applet.
Abajo tienes el código del método paint() que realiza el dibujo real. Observa que el programa sólo dibuja cuadrados negros (indicados porque fillSquare es true), no los
otros cuadrados. Se puede eliminar esto porque, por defecto, el área de dibujo de un Componente se limpia (selecciona el color de fondo) justo antes de llamar al método paint().
// Draw the rectangle if necessary.
if (fillSquare) {
g.fillRect(x, y, w, h);
fillSquare = false;
} else {
fillSquare = true;
}