Rispondo purtroppo solo ora, mi spiace per l'attesa. ;)
26/11/2024 - ZioCrick ha scritto:
Dimenticavo di chiederti: a chi il doInBackground() dovrebbe restituire il valore di testo?
Come farei a ottenere il valore di ritorno?
Ho provato ad assegnare una variabile string alla clSrv.execute ma NetBeans mi da errore.
Il execute() di SwingWorker ha tipo di ritorno void, quindi non è questo che restituisce il risultato! Lo si può invece ottenere solo dai due metodi get:
public final T get()
public final T get(long timeout, TimeUnit unit)
Ma attenzione! Il primo è "bloccante" e chiaramente NON va invocato nel contesto del EDT (che non deve mai essere bloccato per "troppo" tempo). Il secondo è sì bloccante ma con un timeout di attesa che puoi specificare tu.
Insomma, usare questi due metodi nel contesto del EDT è molto difficile/delicato. Metti ad esempio che nella UI hai un pulsante/menù affinché l'utente possa sapere lo stato del task. A seguito dell'evento potresti chiamare il secondo get() con timeout di es. 0,1 secondi (in modo da non bloccare la UI). Se hai il risultato, bene. Se ti sbuca fuori TimeoutException vuol dire che il task è ancora in esecuzione e non hai quindi un risultato.