Cerco di esprimere il mio parere a livello puramente teorico: secondo la percezione alla quale siamo abituati, una ProgressBar dovrebbe aumentare man mano che si scaricano dati o che un'elaborazione viene completata, partendo da una barra vuota che coincide con l'inizio delle operazioni e concludendosi con una barra piena che coincide con la fine del processo, possibilmente ottenendo un riempimento graduale.
Senza addentrarmi nei dettagli, mi pare che il tuo codice definisca una ProgressBar che si incrementa in modo asincrono rispetto alla ricezione dei dati (usa un thread), senza seguire il comportamento che ho descritto sopra (ad esempio, la ProgressBar raggiunge il pieno riempimento mentre il download è ancora in corso).
Non sono a conoscenza delle modalità con cui reperisci i dati dal server, ma secondo me dovresti tentare di inserire in un thread esterno tutta la problematica di ricezione dei dati, cercando di ottenre dalla classe utilizzata per il download dei "risultati parziali" riguardo i dati scaricati che, confrontati con i dati da scaricare nel loro complesso, ti consenta di poter attribuire alla ProgressBar un valore di stato del processo che sia affidabile.
Purtroppo utilizzo Java da poco, quindi non sono in possesso di esempi plausibili da poter citare o inviare per spiegare meglio il concetto, anche se sospetto che sia la stessa cosa che hai pensato tu.
Spero comunque di averti dato indicazioni utili per risolvere il problema.![]()