Hola:
Java tiene un unico hilo encargado de pintar las ventanas, atender teclado, ratón, etc. El click de tu botón se ejecuta en ese hilo y si lo bloqueas con un while(true) (no termina nunca tu metodo), ese hilo esta entretenido haciendo tus system.out y por tanto no repinta ventanas ni atiende a mas eventos de teclado/raton.
La forma correcta de hacerlo es que en el método que se ejecuta al pulsar el JButton lances un hilo y dentro pongas tu while(true). Así liberas rápidamente el hilo de pintar ventanas y el nuevo hilo que has creado es el que se entretiene con los System.out.
Aquí tienes la explicación un poco más detallada
http://chuwiki.chuidiang.org/index.p...hread)_de_Java
Se bueno.