Ciao Shikigami,
Il probleama è appunto una questione di Thread, perchè il Thread che si occupa di disegnare/aggiornare l'interfaccia è lo stesso che ti richiama le azioni che vengono effettuate da essa.
Per risolvere il problema la metodologia migliore e quella di un SwingWorker.
Ciao