Visualizzazione dei risultati da 1 a 10 su 12

Discussione: JProgressBar e Task

Hybrid View

  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
    Feb 2007
    Messaggi
    4,157
    infatti, io nel done in genere faccio vedere o un JDialog che mi dice ho finito (e mi da statistiche/info sul processo) e/o notificavo altre interfacce in attesa, mai ne creavo di nuove
    RTFM Read That F*** Manual!!!

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.