ciao a tutti,
ho un client con GUI che invia un file al server. come faccio ad associare una JProgressBar presente sulla GUI del client all'invio del file al server (ovvero che la barra avanza in base all'invio del file) ?
ciao a tutti,
ho un client con GUI che invia un file al server. come faccio ad associare una JProgressBar presente sulla GUI del client all'invio del file al server (ovvero che la barra avanza in base all'invio del file) ?
Innanzitutto si presuppone che tu abbia fatto la gestione dell'invio in un thread a parte dedicato. Perché se la fai nel contesto del Event Dispatch Thread bloccheresti tutta la interfaccia utente.
Poi come mostrare l'avanzamento si può fare in più modi. Sicuramente con un semplice JProgressBar messo da qualche parte nella tua interfaccia. Ma si può anche usare javax.swing.ProgressMonitor che è sostanzialmente una dialog box con una logica dedicata alla visualizzazione del progresso di "qualcosa".
E nel caso del multi-threading bisogna ricordarsi sempre che in un thread separato (non il EDT) non si deve accedere mai direttamente alla interfaccia utente (salvo pochi casi documentati). Quindi a meno di usare lo SwingWorker, in genere basta usare il "solito" SwingUtilities.invokeLater per far eseguire il codice di update della progressbar nel EDT.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
confermo l'utilizzo dei thread per inviare i file. con java però sono agli inizi: cos'è SwingUtilities.invokeLater?