IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDT/SwingWorker Java Discussion :

Swingworker et JProgressBar


Sujet :

EDT/SwingWorker Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut 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 : 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.

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //le gros traitement en question
        SwingUtilities.invokeLater(new Runnable(){
          public void run() {
            init();
          }
        });
    Ici tu ne fais que placer ton gros traitement dans l'EDT .

    Ici un cours sur le SwingWorker.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SwingWorker et JProgressBar
    Par nddvlp dans le forum EDT/SwingWorker
    Réponses: 8
    Dernier message: 07/01/2015, 14h05
  2. Souci avec SwingWorker et JProgressBar
    Par Niun dans le forum EDT/SwingWorker
    Réponses: 16
    Dernier message: 09/12/2011, 15h49
  3. JProgressBar et Swingworker
    Par JaroBx dans le forum EDT/SwingWorker
    Réponses: 3
    Dernier message: 16/07/2010, 09h01
  4. JProgressBar et Thread avec SwingWorker
    Par sebastien61 dans le forum EDT/SwingWorker
    Réponses: 5
    Dernier message: 13/05/2009, 16h08
  5. SwingWorker Thread et JProgressBar
    Par keub51 dans le forum EDT/SwingWorker
    Réponses: 8
    Dernier message: 13/02/2008, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo