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 :

Création JProgressBar générique


Sujet :

EDT/SwingWorker Java

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    Par défaut Création JProgressBar générique
    Bonjour,

    Je souhaiterais créer une frame avec un jprogressbar (indeterminé) générique. En gros, lorsque l'on a un traitement conséquent on fait appel à la classe, elle affiche une belle barre qui défile dans le vent, et dés que notre traitement est terminé on la ferme (la classe ).

    Voilà la classe (rien de compliqué)
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    public class IndeterminateProgressBar extends SwingWorker<Integer, String>  {
     
        private JFrame jf;
        private JProgressBar jpb;
        private TacheAction tache;
        private JLabel jl;
        private String texte;
     
     
        //************************************
        //CONSTRUCTEURS
        //************************************
        public IndeterminateProgressBar(TacheAction tache) {
    	this.tache = tache;
    	this.jl = new JLabel();
    	createAndshowGui(null);
        }
     
        public IndeterminateProgressBar(TacheAction tache, String texte) {
    	this.tache = tache;
    	this.texte = texte;
    	this.jl = new JLabel(this.texte);
    	createAndshowGui(null);	
        }
     
        public IndeterminateProgressBar(String texte) {
    	this.texte = texte;
    	this.jl = new JLabel();
    	createAndshowGui(null);
        }
     
     
     
        //************************************
        //METHODES PRIVEE
        //************************************
        private void createAndshowGui(String explication) { 
    	//Paramétrage de la Frame	
    	jf = new JFrame();
    	jf.setAlwaysOnTop(true);	
     
    	//Initialisation de la progressbar
    	jpb = new JProgressBar();
    	jpb.setIndeterminate(true);
    	jpb.setStringPainted(false);//Permet de garder la même hauteur si un texte est affiché ou non
     
    	JPanel mainPanel = new JPanel();
            mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
    	mainPanel.setPreferredSize(new Dimension(400, 70));
     
    	jl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    	jpb.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    	jl.setAlignmentX(Component.CENTER_ALIGNMENT);
     
    	mainPanel.add(this.jl);
    	mainPanel.add(this.jpb);
     
            jf.setContentPane(mainPanel);
    	jf.pack();
    	jf.setLocationRelativeTo(jf.getParent()); // Centrage de la frame
    	jf.setVisible(true);
        }
     
        @Override
        protected Integer doInBackground() throws Exception {
    	if (tache != null)
    	    this.tache.aFaire();
    	else{
    	    System.out.println("Début traitement");
    	    wait(5000);
    	    System.out.println("Fin traitement");
    	}
    	return null;
        }
     
        @Override
        public void done() {
    	// Les ressources utilisées par la fenêtre ainsi que
    	// ses enfants sont détruites et récupérées
    	System.out.println("Terminé");
    	jf.dispose();
        }
     
        public static void main(String... args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    /* Démarrage de l'interface graphique et du SwingWorker. */
            	IndeterminateProgressBar demo = new IndeterminateProgressBar("Test");
            	demo.execute();
                }
            });
        }
     
    }
    Lorsque j'execute le main, je m'attends à:
    .Affichage de la fenêtre
    .Début Traitement dans la console
    .5 seconde d'attente (la progressbar défile toujours)
    .FinTraitement dans la console
    .Terminé dans la console

    Et pourtant j'obtiens, un
    .Affichage de la fenêtre
    .Début Traitement dans la console
    .Terminé dans la console

    Une idée pour ce premier problème?

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    Par défaut
    Bon, apparemment c'est le wait(5000) qui pose problème: si je le remplace par la copie d'un gros fichier, cela fonctionne parfaitement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Tente cela

    System.out.println("Début traitement");
    try {
    Thread.sleep(5000);
    } catch (InterruptedException e) {}
    System.out.println("Fin traitement");

    Tu peux regarder ici pour comprendre

    http://www.developpez.net/forums/d18...ad-sleep-wait/

Discussions similaires

  1. Logiciel pour création de génériques de JT
    Par souminet dans le forum Vidéo
    Réponses: 2
    Dernier message: 14/03/2010, 08h40
  2. Création "Objet générique"
    Par Torg666 dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 04/02/2009, 14h45
  3. [Débutant] Création générique de matrices à partir de leur nom
    Par riri1483 dans le forum MATLAB
    Réponses: 2
    Dernier message: 10/06/2008, 18h07
  4. Réponses: 6
    Dernier message: 28/04/2008, 10h24
  5. création d'un trigger générique
    Par orphenou dans le forum Développement
    Réponses: 5
    Dernier message: 31/03/2006, 11h44

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