Ciao,
il problema è che usi lo stesso thread per gestire la grafica ed il metodo di lunga durata.
Swing ha un suo thread predefinito per gestire gli eventi (compreso l'aggiornamento del progressbar).
Lancia il metodo di lunga durata con un thread diverso, in modo che il thread di swing abbia intanto le risorse per gestire e tenere aggiornata la grafica.
In rete e, penso anche nel forum, ci sono esempi a riguardo, però prima ti devi guardare un pò i concetti della concorrenza in java.
Buon lavoro.

Rispondi quotando