PDA

View Full Version : [JavaSwing] aiuto visualizzazione "caricamento in corso"


frank_lt
26-11-2006, 16:05
Buongiorno a tutti ho un problemino spero che qualcuno di voi possa aiutarmi dunque ecco il problema :

ho un applicazione Swing che visualizza dei grafici creati con JFreeChart,
durante il caricamento del grafico vorrei far apparire una label "caricamento in corso" e farla scomparire alla fine del caricamento.

nomeLabel.setVisible(true);

//codice per la generazione del grafico


ho fatto cosi, solo che la LABEL nn me la fa vedere prima della fine del caricamento del grafico anche se è impostata a true prima della chiamata x la generazione del grafico.

come posso farE?

graziee

PGI-Bis
26-11-2006, 16:53
Supponendo che nomeLabel.setVisible(true) sia un'istruzione eseguita dall'AWT Event Dispatcher Thread, puoi demandare il caricamento del grafico ad un Thread diverso. L'ultimo istruzione di questo Thread sarà l'impostazione della visibilità dell'etichetta nomeLabel a false demandata all'AWT Event Dispatcher Thread (l'unico autorizzato ad operare con gli stati di un componente AWT/Swing connesso ad un albero di proiezione).

Nel caso in cui JFreeChart richieda che il caricamento sia anch'esso eseguito dall'AWT Event Dispatcher, connetti alla tua etichetta un ascoltatore di eventi che ti permetta di intercettare la mutazione dello stato visible (a naso direi un PropertyListener). Quando intercetti il passaggio di visible a "true", attiva un Thread che, dopo una piccola pausa, rimandi all'AWT Event Dispatcher Thread il compito di caricare il grafico. L'ultima istruzione del compito rimandato sarà la scomparsa dell'etichetta. La piccola pausa ha lo scopo di consentire "euristicamente" il completamento delle operazioni di disegno dell'etichetta da parte dell'AWT Event Dispatcher.

frank_lt
26-11-2006, 17:47
Grazieeee milleeee!!! ora funziona!!!

:D