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();
}
}
}
|