View Single Post
Old 14-11-2008, 17:40   #18
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Usa un altro Runnable, che chiamiamo "showProgression", così lo puoi accodare nell'EDT prima di "buildInterface".

Naturalmente devi passare a "buildInterface" una reference che punti al componente grafico da lanciare in "showProgression" in modo da poter fermare la ProgressBar e chiudere la relativa finestra appena la GUI è inizializzata (cioè al termine del processo definito in "buildInterface")

A questo punto ti potresti definire i due Runnable come classi al di fuori del metodo actionPerformed, che si limiterà a schedulare correttamente i due "task":
Codice:
public void actionPerformed(ActionEvent e)
{
    // costruisce "showProgression" e lo accoda nell'EDT
    ShowProgression progressionFrame = new ShowProgression();
    SwingUtilities.invokeLater(progressionFrame);
     
    // costruisce "buildInterface", passa riferimento al "showProgression"
    // da chiudere al completamento e lo accoda nell'EDT
    SwingUtilities.invokeLater(new BuildInterface(progressionFrame));
}
Il codice è di puro esempio per illustrare il concetto.

- ShowProgression è una classe che estende JFrame o JDialog (per la versione popup della ProgressBar) e implementa Runnable (così è accodabile come thread da eseguire nell'EDT)

- BuildInterface è una classe che semplicemente estende Thread oppure implementa Runnable.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso