Probabilmente esistono anche articoli/tutorial in italiano .... ma non ho link da darti al momento.Originariamente inviato da Salinas
Non esistono guide in italiano su questa materia???
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 ....
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...Originariamente inviato da Salinas
Visto che non conosco l'argomento mi rimane più difficile capirlo in inglese che in italiano.
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.