Hola:
Cuando se ejecuta algo como consecuencia de la pulsación de un botón o evento de teclado, ese algo se ejecuta en el mismo hilo que se encarga de repintar las ventanas. Por eso, todo lo que hagas ahí no se verá hasta que termines. Si en ese código vas haciendo cosas sobre las ventanas, no verás los resultados hasta el final, todo de golpe, que es lo que te está pasando.
La solución es en el código del evento lanzar un hilo nuevo para liberar el hilo de pintado de ventanas lo antes posible. En ese hilo nuevo ya sí puedes ir mostrando cosas sobre las ventanas y las verás inmediatamente.
Echa un ojo a estos enlaces para más información
El hilo de awt.
Animación en java.
Se bueno.