Originariamente inviato da ziz
inserire un listener nella GUI che mi aggiorni il dialog.
Dipende cosa intendi per "listener" (se esattamente come lo intendono AWT/Swing) ma credo che in questo contesto sia un'ottica sbagliata.

Originariamente inviato da ziz
Tuttavia sarei interessato a capire meglio il funzionamento dello SwingWorker.

Credi che qualcosa di questo tipo possa andar bene? Da quanto ho letto credo possa funzionare, ma non so se ha senso utilizzare uno SwingWorker<Void, Void>...
No, non ha senso e il codice che hai postato non dovrebbe nemmeno compilarti!

In SwingWorker<T,V>, il T è il tipo che deve restituire doInBackground(). Questo è un valore "finale" ritornato dalla computazione in background e che può essere ottenuto dai metodi "bloccanti" get (se necessario, attendono la fine della computazione).

Certo, non sempre è necessario e se a te non serve, devi comunque usare Void (sia nella parametrizzazione per T sia nella dichiarazione di doInBackground), non void.

Il V è il tipo che può essere "pubblicato" con publish e che viene passato al process, nascondendo però (a questo serve SwingWorker) il passaggio nel EDT che viene fatto internamente.

Pertanto se hai scritto process(List<String[]> labels), non puoi certo tipizzare V con Void!!
Tra l'altro credo che non hai capito un'altra cosa: se devi "pubblicare" N String, ti basta che V sia String ... non String[]. publish è un metodo "varargs", che accetta direttamente N argomenti o in alternativa un array diretto. E gli N valori li riceve il process con un List.

P.S.: e occhio alla questione, ben spiegata nella documentazione di publish, che più "pubblicazioni" potrebbero essere accorpate insieme in una unica invocazione a process.