Hola:
Java tiene un hilo de despacho de eventos (EDT) que es el hilo que se encarga de manejar todos los eventos de teclado, de ratón y de pintar las ventanas. Si ese hilo se queda bloqueado, las ventanas no responden y no se repintan.
En tu caso, java ejecuta el actiponPerformed() en ese hilo, puesto que es un evento de click en una ventana. Es posible que estás bloqueando ese hilo con el while(c.isRunning()). Ten en cuenta, por ejemplo, que la visualización de la ventana Contador y el c.setText() también tratan de ejecutarse en ese hilo EDT que en ese momento está en tu actionPerformed().
La solución suele ser meter todo el código de actionPerformed en un Runnable y lanzarlo como hilo aparte, de forma que no bloquees el actionPerformed y salga lo antes posible.
Más detalles aquí
http://chuwiki.chuidiang.org/index.p...hread)_de_Java
Se bueno.