View Full Version : [JAVA] JProgressBar e calcolo tempo di loading
Oceans11
24-11-2005, 19:54
come posso far avanzare "DECENTEMENTE" la jprogress bar mentre la jvm mi carica la GUI di un programma????
in pratica vorrei uno splash con la progressbar che avanza da 0 (quando avvio il thread che crea la GUI) a 100 (quando la GUI è pronta per essere visualizzata!!!!)
per il momento uso la classe timertask ma non è molto professionale così...se cambio computer dovrei cambiare codice!!!!!!!!!!!!!!! :muro:
sottovento
25-11-2005, 12:38
Si fa quello che si puo' e non quello che si vuole... :(
1 - E' accettabile settare la progress bar in modalita' indeterminata?
2 - Potresti memorizzarti su memoria di massa il tempo impiegato per aprire l'applicazione (magari ogni volta che lanci l'esecuzione). In base a questo, le volte successive potresti essere piu' preciso. Al cambio di computer, dovrebbe restare 'sballata' solo la prima esecuzione. Ovviamente anche questo e' un ripiego.
Naturalmente se la GUI ti fornisse degli eventi di qualsiasi genere relativi all'avanzamento dei lavori sarebbe meglio, ma da quel che mi par di capire, questo non e' possibile...
Oceans11
25-11-2005, 13:02
Si fa quello che si puo' e non quello che si vuole... :(
sì che è accettabile settare la progress bar in modalita' indeterminata ma magari solo all'inizio....
va bene anche per il calcolo del tempo...ma "POSSO" essere più preciso????
Naturalmente se la GUI ti fornisse degli eventi di qualsiasi genere relativi all'avanzamento dei lavori sarebbe meglio, ma da quel che mi par di capire, questo non e' possibile...
sai che c'è???controlla tra le demo del jdk e troverai un programma...se non sbaglio java2d...che carica le tabbedpane e và come un orologio svizzero!!!!
però:
1) non so bene come fà...il codice da controllare è proprio tanto!!!!
2) io non ho tabbedPane ma qualche tree un area di testo la barra dei menu la toolbar etc...
sottovento
25-11-2005, 13:59
Ho controllato la demo. Il codice che ti interessa e' nel file Java2Demo.java.
La soluzione che usa e':
// hard coding 14 = 11 demo dirs + images + fonts + Intro
progressBar.setMaximum(13);
progressLabel.setText("Loading images");
new DemoImages();
progressBar.setValue(progressBar.getValue() + 1);
progressLabel.setText("Loading fonts");
new DemoFonts();
progressBar.setValue(progressBar.getValue() + 1);
progressLabel.setText("Loading Intro");
intro = new Intro();
progressBar.setValue(progressBar.getValue() + 1);
Direi che non e' il massimo della precisione. Cmq il risultato e' buono.
Potresti fare lo stesso (compatibilmente con la struttura del tuo applicativo).
A questo punto, le soluzioni precedenti non sembrano malaccio. Questa pero' e' sicuramente piu' semplice da implementare
^TiGeRShArK^
26-11-2005, 00:58
non puoi implementare il metodo componentAdded() nel ContainerListener e di conseguenza vedere ogni volta che aggiungi un componente a quel container???
in questo modo avrai una granularità molto maggiore dato che sarà pari al numero di componenti che aggiungi...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.