Originariamente inviato da Salinas
Non esistono guide in italiano su questa materia???
Probabilmente esistono anche articoli/tutorial in italiano .... ma non ho link da darti al momento.
Comunque lo sai sicuramente bene anche tu: se non hai una conoscenza, anche minima, di inglese che ti permetta di leggere almeno della documentazione "tecnica", sei "tagliato" fuori dal 90% della documentazione più utile e aggiornata. Fai le tue considerazioni ....

Originariamente inviato da Salinas
Visto che non conosco l'argomento mi rimane più difficile capirlo in inglese che in italiano.
Il succo è semplice: la gestione delle interfacce grafiche AWT/Swing è basata su un unico thread chiamato convenzionalmente EDT (event dispatch thread). Questo è il thread che si occupa, tra le altre cose, di "disegnare" la interfaccia utente e di dispacciare gli eventi ai listener. Cioè c'è un unico "flusso" di esecuzione che di tanto in tanto un po' aggiorna la interfaccia, un po' dispaccia gli eventi, fa altro, ecc...

I metodi dei listener (es. actionPerformed()) sono invocati nel contesto del EDT. Se ti metti ad impegnare tu il EDT (con operazioni lunghe, I/O "bloccante", cicli, sleep() o roba del genere), il controllo non può certo tornare di nuovo al framework, che quindi non può aggiornare nulla a video e nemmeno dispacciare altri eventi. La tua interfaccia è "congelata". Punto.

Devi fare operazioni lunghe? Devi eseguirle in un thread separato, con un "normale" Thread o con un SwingWorker. Con tutto ciò che ne consegue, in particolar modo per quanto riguarda l'aggiornamento della interfaccia utente. Già, perché salvo pochi casi (e ben documentati), l'accesso a qualunque componente della interfaccia utente va fatto solo ed esclusivamente nel contesto del EDT.