Hola:
Si solo se te congela la aplicación hasta que termina la función, posiblemente el motivo sea que estás bloqueando el hilo de java que se encarga de atender a los eventos de ratoón y repintado de ventanas (EDT o Event Dispatch Thread). La solución es lanzar un hilo aparte para ejecutar esa función que tarda mucho.
Aquí tienes más info y un ejemplo
http://chuwiki.chuidiang.org/index.p...ead%29_de_Java
Se bueno.