Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: JProgressBar e Task

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305

    JProgressBar e Task

    Salve ho una JProgressBar in un JFrame, vorrei collegare l'avanzamento di questa barra a un thread che però effettivamente non so quanto dura. Vorrei che la barra avanzasse in modo da arrivare al 100% quando i lavori da svolgere sono terminati. qualcuno saprebbe aiutarmi.? ho letto la documentazione ma non è molto chiara su come usare la JProgressBar. Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    Salve ho una JProgressBar in un JFrame, vorrei collegare l'avanzamento di questa barra a un thread che però effettivamente non so quanto dura. Vorrei che la barra avanzasse in modo da arrivare al 100% quando i lavori da svolgere sono terminati.
    Quando far avanzare la progress bar, di quanto farla avanzare e cose del genere lo stabilisci ovviamente tu. Il punto più importante è che se sei nel contesto di un thread che non è il EDT, non è appropriato accedere direttamente alla UI (salvo alcuni, pochi, casi particolari e documentati). Pertanto devi far "passare" un pezzetto di codice nel EDT con il solito invokeLater.

    In alternativa esiste SwingWorker (di serie solo da Java 6, valia ti ha linkato il tutorial) che aiuta parecchio nella interazione tra operazioni in background e aggiornamento della UI.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    praticamente già uso swingworker e uso do in background con le operazioni, e done per caricare le interfacce grafiche(eseguito da edt)
    ma il fatto è che quando eseguo done la barra si blocca(giustamente). come potrei risolvere?

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    ma il fatto è che quando eseguo done la barra si blocca(giustamente). come potrei risolvere?
    Che vuol dire "si blocca"? done() è invocato nel EDT solo dopo che doInBackground è terminato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    esatto io vorrei che la progress bar (di tipo indeterminato) continuasse a muoversi anche durante il metodo done(), ma questo non è possibile perchè sono entrambi eseguiti dall'edt. Nel metodo done() io inizializzo l'interfaccia grafica

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    esatto io vorrei che la progress bar (di tipo indeterminato) continuasse a muoversi anche durante il metodo done(), ma questo non è possibile perchè sono entrambi eseguiti dall'edt. Nel metodo done() io inizializzo l'interfaccia grafica
    Nel done() puoi fare quello che vuoi, purché sia comunque "veloce" (sei nel EDT). Generalmente done() serve per indicare che il lavoro è terminato, ad esempio riabilitando il pulsante che ha lanciato il lavoro in background oppure mostrando una dialog di completamento o cose del genere.

    Che vuol dire "ma questo non è possibile perchè sono entrambi eseguiti dall'edt" ?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    allora lo scorrimento della barra viene fatto dall'edt, quando essa è settata indeterminata. Naturalmente quando viene invocato done , la barra non si muove più perchè l'edt è impegnato in altro

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da linux_r Visualizza il messaggio
    allora lo scorrimento della barra viene fatto dall'edt, quando essa è settata indeterminata. Naturalmente quando viene invocato done , la barra non si muove più perchè l'edt è impegnato in altro
    done() non lo devi tenere "impegnato" tu (per troppo tempo) con tue cose. L'unica cosa che riterrei accettabile è il setVisible(true) di una dialog modale, poiché il loop degli eventi è comunque interno e quindi continua. Non ho mai provato questo scenario ma ... proverò ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    305
    nel metodo done() avvio le interfacce grafiche nient'altro nessuna operazione extra, che occupa tempo!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.