Dò anche io la mia versione che sto usando in un'app, così me la controllate
Il mio splash screen ha un'etichetta e una progress bar:
Codice:
public class Splash
extends JWindow
{
private final JLabel label = new JLabel();
private final JProgressBar progress = new JProgressBar();
private final JPanel content = new JPanel();
private final int tasks;
private int currentTask;
public Splash(int tasks)
{
this.tasks = tasks;
currentTask = 0;
label.setPreferredSize( new Dimension(200,30) );
label.setHorizontalAlignment( JLabel.CENTER );
... // disegna la label e la pbar sul pannello content
setContentPane( content );
pack();
// centra sullo schermo
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(screenSize.width/2 - (getWidth()/2),
screenSize.height/2 - (getHeight()/2) );
}
il parametro tasks dice quanti task ci sono in tutto (in quante parti dividere la pbar).
Si fa "partire" con il metodo:
Codice:
public void start()
{
setVisible(true);
}
prima di cominciare a creare l'interfaccia, e si ferma con:
Codice:
public void stop()
{
dispose();
}
dopo aver finito.
I task si aggiungono con:
Codice:
public void startingTask(String message)
{
label.setText( message );
progress.setValue( currentTask * 100 / tasks );
currentTask++;
content.paintImmediately( 0, 0, content.getWidth(), content.getHeight());
}
in cui message è un messaggio del tipo "Initializing Color palette".
Tutto questo va fatto sull'EDT.