Discussione: [Java] Progress Bar
View Single Post
Old 23-05-2007, 09:43   #8
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
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.
lovaz è offline   Rispondi citando il messaggio o parte di esso