Buongiorno a tutti!
Ho un problema di aggiornamento con una Gui creata tramite Swing.
Ho realizzato un piccolo web crawler multi thread, inizialmente senza interfaccia. Ho deciso in seguito di aggiungere un'interfaccia, appunto tramite swing.
La computazione avviene senza intoppi e il programma funziona, ma non mi aggiorna la GUI in un determinato momento.
Il mio programma è composto da 3 classi Main, Crawler e PageExplorer. L'interfaccia è definita nella Main, la quale crea un oggetto Crawler che lancia i thread, che costruisco tramite PageExplorer che estende Thread di Java.
All'interno della classe Crawler è presente un metodo end(), il quale viene chiamato una volta che sono stati esaminati i link richiesti.
Quando dò "il via" alla sessione di crawling, nella classe Main, contestualmente disattivo, con successo, il bottone di Start: viene eseguita tutta la sessione, correttamente, e viene chiamato il metodo end(), al cui interno vi è una print "Ho finito".
Subito dopo questa print, creo un oggetto della classe Main, e gli applico il metodo che mi dovrebbe riattivare il bottone. Purtroppo non me lo riattiva 
Questa riattivazione l'ho scritta tenendo conto che è l'EDT a dover aggiornare la GUI, quindi utilizzando invokeAndWait e Runnable.
Lascio il codice, sperando che qualcuno di voi mi possa aiutare!
Metodo invocato nella classe Crawler ed eseguito in toto, tranne l'aggiornamento del bottone. Le print le ho utilizzate come "debug" 
codice:
public void stopBar(){
Runnable target = new Runnable() {
@Override
public void run() {
System.out.println("Sono il thread prima di btnstart " + Thread.currentThread().getName());
btnStart.setEnabled(true);
}
};
System.out.println("Sono il thread, prima di trycactch " + Thread.currentThread().getName());
try {
EventQueue.invokeAndWait(target);
System.out.println("Dopo invoke");
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}