Bonjour, j'aimerais afficher une barre de progression pendant l'execution d'une fonction nommée TOTO (son temps d'execution est relativement long)... Je me suis inspiré du tutorial consacre aux JProgressBar sur le site de sun ...
Neanmoins, la barre part de 0, ma fonction s'excute, et une fois executee, 100% s'affiche ... Je ne vois pas la progression ...
Que puis je faire ? Que dois je modifier dans mon code ? Merci de m'aider, je ne m'y connait pas bcp en thread ... Thks ...
public class JProgress2 extends JFrame implements Runnable
{
private JProgressBar progress;
private boolean isStarted;
private JButton bouton;
private int value;
public JProgress2 ()
{
super ("JProgressBar");
this.isStarted = false;
this.value = 0;
this.progress = new JProgressBar (0, 100);
this.progress.setStringPainted (true);
this.getContentPane ().add (this.progress);
this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
this.setLocation (200, 200);
this.pack ();
this.setVisible (true);
this.progress.setValue (0);
this.value = 0;
this.lanceLongTraitement ();
}
// cree un nouveau Thread et appelle la methode start
public void lanceLongTraitement ()
{
Thread t = new Thread (this);
t.start ();
// maintenant nous rendons la main au processus d'evenement
}
// methode de l'interface Runnable
// lance un nouveau thread qui va executer le code de la methode longTraitement
public void run ()
{
this.uneOperation();
}
public void longTraitement ()
{ // execute la succession d'operation ...
// on est plus dans le processus d'evenement mais dans le nouveau Thread
this.uneOperation ();
for (int i = 0; i < 100; i++)
{
this.majProgress ();
}
}
// methode qui effectue une pause pour simuler une operation
private synchronized void uneOperation ()
{ try
{
TOTO();
//this.wait (100);
this.majProgress ();
for (int i = 0; i < 100; i++)
{
this.majProgress ();
}
}
catch (Exception e)
{
}
}
public void majProgress ()
{
if ( SwingUtilities.isEventDispatchThread () )
{
progress.setValue (++value);
}
else
{
Runnable callMAJ = new Runnable ()
{
public void run ()
{
majProgress ();
}
};
SwingUtilities.invokeLater (callMAJ);
}
}
MERCI d'avance
}