Mostrare una form temporanea

di il
16 risposte

16 Risposte - Pagina 2

  • Re: Mostrare una form temporanea

    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.

  • Re: Mostrare una form temporanea

    03/12/2024 - andbin ha scritto:

    Rispondo purtroppo solo ora, mi spiace per l'attesa. ;)

    .....

    public final T get()
    public final T get(long timeout, TimeUnit unit)

    ......

     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.

    Grazie mille caro. Non preoccuparti per l'attesa. Il problema principale l'ho risolto grazie al tuo aiuto. :-)
    Questa era soltanto la mia insanabile curiosità e voglia di capirne di più su java.
    Appena avrò sistemato alcune altre cose che mi premono di più, farò un po' di prove. ;-)

Devi accedere o registrarti per scrivere nel forum
16 risposte