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

AWT/Swing Java Discussion :

JProgress Bar (à incrémenter)


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Par défaut JProgress Bar (à incrémenter)
    Bonjour,

    Hey bien voilà je viens de me lancer dans la JProgress Bar pour faire plaisir aux futurs utilisateurs de mon application... Mais j'ai rencontré quelques soucis.

    Dans mon programme, plusieurs équipements sont traités 1 à 1 (chacun leur tour) et je voudrai que cette Progress bar se mette à jour dès que le traitement d'un équipement est fini.

    Pour ce faire, Je me suis donc orienté vers la création de mon propre listener d'équipement, un listener qui est actif dès que l'équipement est traité et qui par conséquent indiquerait à la barre qu'il faut qu'elle se mettte à jour. Mais là est mon problème j'ai pris ce bout de code :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    package pbar;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class ProgressMonitorExample extends JFrame 
            implements ActionListener {
     
        /**
             * 
             */
    	private static final long serialVersionUID = -6247526933999249563L;
    	static ProgressMonitor pbar;
        static int counter = 0;
     
        public ProgressMonitorExample() {
            super("Progress Monitor Demo");
            setSize(250,100);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
            pbar = new ProgressMonitor(null, "Monitoring Progress",
                    "Initializing . . .", 0, 100);
     
            // Fire a timer every once in a while to update the progress.
            Timer timer = new Timer(500, this);
            timer.start();
            setVisible(true);
            this.setResizable(false);
            this.setVisible(false);
        }
     
        public static void main(String args[]) {
            UIManager.put("ProgressMonitor.progressText", "Progression Bar");
            new ProgressMonitorExample();
        }
     
        public void actionPerformed(ActionEvent e) {
            // Invoked by the timer every half second. Simply place
            // the progress monitor update on the event queue.
            SwingUtilities.invokeLater(new Update());
        }
     
        class Update implements Runnable {
            public void run() {
                if (pbar.isCanceled()) {
     
                }
                pbar.setProgress(counter);
                pbar.setNote("Operation is "+counter+"% complete");
                counter += 10;
            }
        }
    }

    Mais Malheureusement ici c'est le timer qui implémente "Update" et moi j'aimerai que ce soit mon listener ...

    Si vous avez une solution Merci

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    la seule précaution que tu aies à prendre, c'est de traiter les équipements dans un Thread différent de l'EDT (celui qui exécute les méthodes de listeners). Un exemple simple et incomplet :
    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
    29
    30
    public class ... implements Runnable, ActionListener {
     
      JButton startButton;
      JProgressBar bar;
      List<Equipement> equipements;
      ...
     
        startButton.addActionListener(this);
     
      ...
      public void actionPerformed(ActionEvent e) {
        // on lance le traitement dans un nouveau Thread
        new Thread(this).start();
      }
     
      public void run() {
        int done = 0;
        bar.setMinimum(0);
        bar.setMaximum(equipements.size());
        bar.setValue(0);
        // on traite les équipements
        for(Equipement eq : equipements) {
          // on traite 1 équipement
          eq.traiter(...);
          // on met à jour la ProgressBar
          done++;
          bar.setValue(done);
        }
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. Progress bar qui ne s'incrémente pas
    Par juliematlab dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2013, 15h23
  2. Mettre en pause plusieurs Jprogress Bar
    Par Cedric3111 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 27/01/2011, 21h05
  3. jProgress Bar et EDT
    Par nutix2003 dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 13/04/2007, 14h50
  4. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36
  5. outlook bar
    Par camis dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/08/2002, 17h13

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