Bonjour,

Comme de nombreuses personnes avant moi, je cherche à afficher un JProgressBar pour un traitement assez long.
Pour cela j'ai créé une classe permettant d'afficher une petite fenêtre avec mon JProgressBar à l'intérieur.
Lors de mes premiers essais, ne connaissant pas le SwingWorker et n'étant pas du tout à l'aise avec l'EDT, cette fenêtre s'affichait mais sans rien à l'intérieur : problème de gèle dû au traitement.
Maintenant, avec l'utilisation d'un SwingUtilities.invokeLater() ma fenêtre s'affiche correctement mais le JProgressBar n'est pas mise à jour au fur est à mesure du traitement.

Voilà en gros le code utilisé.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
public class monPanel extends JPanel{
  MaClassePourLeJProgressBar maFrameDeProgression;
  public monPanel(int param){
    //Instanciation de ma fenêtre affichant le JProgressBar 
    maFrameDeProgression = new MaClassePourLeJProgressBar();
 
    //le gros traitement en question
    SwingUtilities.invokeLater(new Runnable(){
      public void run() {
        init();
      }
    });
 
  }
 
 
  public void init(){
    //J'effectue des traitements
    unTraitement();
 
    //A chaque étapes terminées je souhaite mettre à jour mon JProgressBar
    //Par exemple ici je lui indique 25% terminés
    maFrameDeProgression.miseAjour(25); //==>Probléme, le JprogressBar affiché n'est pas MAJ
  }
 
 
}
Une idée du problème?

Merci.