TUTORIELS 
JFC/Swing : utiliser JProgressBar()
Une classe spécialement conçue pour afficher une barre de progression, permettant de faire patienter pendant un traitement.  (Novembre 2003)
 
Discutez en sur les forums

Les Java Fundation Classes (JFC) et Swing apportent un grand nombre d'élément graphiques que l'on ne trouve pas au sein de l'Abstract Window Toolkit (AWT). Parmi ces composants se trouve JProgressBar(), qui comme son nom l'indique permet d'apprécier le temps restant avant la fin d'une action en cours, grâce à une barre de progression. Cela peut être le chargement d'un fichier, son traitement, ou tout autre programme pouvant prendre du temps.
De fait, si elle n'est pas toujours indispensable, elle peut cependant se révéler nécessaire lors de l'écriture d'une routine susceptible de bloquer l'application pendant un traitement.

La barre est mise à jour grâce au champ ChangeEvent de la barre, qui s'occupe de la tâche à surveiller (ici, une boucle while() classique). C'est ensuite la méthode getPercentComplete() qui nous permet d'afficher où en est la barre dans le champ texte créé via la méthode setStringPainted(boolean b).

Le code
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class JProgressBarTest extends Frame implements ChangeListener
  {
  JProgressBar maBarre;

  public JProgressBarTest()
    {
    setLayout(new BorderLayout());
    maBarre = new JProgressBar(0,99);
    maBarre.setString("Progression");
    maBarre.setStringPainted(true);
    maBarre.addChangeListener(this);
    add("Center", maBarre);
    setBounds(320,240,250,100);
    setVisible(true);
    }

  public void stateChanged(ChangeEvent e)
    {
    maBarre.setString ("Progession: " + (int)(maBarre.getPercentComplete()*100) + "%");
    }

  public static void main(String[] args)
    {
    JProgressBarTest monTest = new JProgressBarTest();
    while (true)
      {
      monTest.maBarre.setValue( (int)(Math.random()*100) );
      Thread.yield();
      }
    }
  }

 
[ RédactionJDNet
 
Accueil | Haut de page