Créer une fenetre de progression
Pour l'exemple, nous allons construire un JFrame contenant une JProgressBar qui affiche l'avancement de l'opération de 0 à 100 pourcent. La tache longue est simulée avec une boucle et un Sleep.
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
/**
* Afficher une barre de progression dans un JFrame
* @see http://www.fobec.com/java/966/afficher-une-barre-progression-dans-jframe.html
* @author Axel 2010
*/
public class ProgressDialog extends JFrame {
public JProgressBar progressbar;
/**
* Constructeur
*/
public ProgressDialog() {
super();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
JPanel pane = new JPanel();
pane.setLayout(new FlowLayout());
progressbar = new JProgressBar(0, 100);
progressbar.setValue(0);
progressbar.setStringPainted(true);
pane.add(progressbar);
setContentPane(pane);
}
/**
* Afficher la progression de tache
*/
public void loop() {
int position = 0;
while (position < 105) {
progressbar.setValue(position);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
position += 5;
}
}
/**
* Exemple
* @param arguments
*/
public static void main(String[] arguments) {
ProgressDialog frame = new ProgressDialog();
frame.pack();
frame.setVisible(true);
frame.loop();
}
}
Cet exemple a pour but de montrer comment agir sur l'avancement de la JProgressBar, à savoir faire avancer la progression de 0 à 100 pourcent. Effectivement, le système de fenetre d'attente pourra être améliorer avec un Thread pour éviter les sacades.