Visualizzazione dei risultati da 1 a 5 su 5

Discussione: JProgressBar e Thread

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69

    [JAVA] JProgressBar e Thread

    Salve,

    sto cercando di usare una semplice progress bar nel mio JFrame. Il problema è che la progress bar deve iniziare a lavorare solo alla pressione di un pulsante. Quindi tutto avviene all'interno dell'action listner del frame.
    Il fatto è che in pratica nonostante aggiorni la progress bar continuamente, il cambiamento mi si visualizza solo alla fine della routine di cui dovrebbe essere appunto la progress bar. In pratica rimane sempre a 0% fino a che la routine non termina, allora si "risveglia" e appare al 100%.
    Ho pensato che potrebbe essere che la routine sia troppo pesante come calcoli (in effetti sono 3 cicli annidati!). Allora ho pensato di usare la SwingUtilities.invokeAndWait() la quale permette di runnare un thread separato che viene eseguito prima del chiamante, il quale prima di continuare attende la terminazione di tale thread secondario. In pratica avrei:

    Nell'action listener del JFrame principale:
    codice:
    ...
    public void RoutinePienaDiCicli() {
    ...
       Runnable aggiornaProgressBar = new Runnable() {
          public void run() {
             progressBar.setValue(xxx);
          }
       };
       SwingUtilities.invokeAndWait(aggiornaProgressBar);
    ...
    }
    Così ho pensato che la RoutinePienaDiCicli() non sarebbe avanzata fino a quando la progress bar non fosse stata aggiornata. Risultato: mi dà un errore in cui mi dice che non posso usare la invokeAndWait() dentro l'event dispatcher!!!

    Consigli, chiarimenti?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    69
    A chi interessasse ho risolto così:

    Ho implementato la RoutinePienaDiCilci() come una classe Runnable.

    Nel Frame principale istanzio un nuovo thread e come argomento passo proprio la classe runnable sopra e avvio il thread...così sembra funzionare benissimo

  3. #3
    Utente di HTML.it L'avatar di softoxy
    Registrato dal
    Apr 2001
    Messaggi
    202

    ........

    Puoi spiegarti meglio, grazie mille.
    Soft!2001

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Le domande relative al linguaggio Java vanno ora inserite nell'apposito forum dedicato.
    Sposto la discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Originariamente inviato da softoxy
    Puoi spiegarti meglio, grazie mille.
    Rettifico, poiché non mi sono accordo che la discussione era già aperta da tempo.

    Non intervenire in discussioni concluse chiedendo suggerimenti a utenti che potrebbero non essere più attivi. Se hai in quesito, apri una nuova discussione in cui trattare il problema.

    Soprattutto per il fatto che il motivo per cui hai posto la domanda ha a che fare con una discussione che hai appena aperto e di cui si sta già parlando, quindi non è corretto risollevarne altre.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.