Swingworker et JProgressBar
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:
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.