Parlando in generale, le operazioni sulla interfaccia grafica (aggiunta/rimozione di componenti o modifica dello stato dei componenti, es setText() ) va sempre e solo fatta nel contesto del EDT, "event-dispatch-thread", non di un thread qualunque. Questo perché Swing non è thread-safe.

Per maggiori info, vedere i link che ho indicato in questo mio post.