Hola:
Para que el programa no se "trabe" lanza un hilo separado para hacer eso.
Lo del hilo es así
Código:
Thread hilo = new Thread (new Runnable()
{
public void run()
{
while (...)
{
...
}
}
});
hilo.start();
Si no lanzas el hilo te está pasando lo siguiente. El código del click de ratón java lo ejecuta en el mismo hilo que refresca y pinta las ventanas. Si terminas rápido el método, las ventanas se quedan sin refresco y el programa da la sensación de estar colgado. Por ello, cuando al pulsar un botón, hacer un click o cualquier otro evento de ratón preveas que vas a tardar, es mejor lanzar un hilo que haga esa tarea y devolver el control a java rápidamente.
Se bueno.