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

Composants Java Discussion :

Modification Affichage dans while


Sujet :

Composants Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut Modification Affichage dans while
    Bonjour,
    j'aurais une petite question , je n'arrive pas à modifier des éléments de ma fenêtres dans mon while (il se voit être modifié uniquement à la fin de ma boucle).

    J'ai un Jlabel et une JProgressBar que je voudrais modifier dans ma boucle.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while((chaine = fichier_source.readLine())!= null)
          {
                       if(total > 1)
                       {
     
                          String valeur = "Ligne " + total + " .";
                          this.jLabel1.setText(valeur);
                          this.jProgressBar1.setValue(total);
                          System.out.println(total);
                          ....
                         }
          }
    J'ai essayé d'ajouter un .sleep sans effet, donc si vous avez une idée ou même un lien qui pourrait répondre à mon probléme.

    Merci

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Petite lecture obligatoire pour comprendre ce qu'il t'arrive: http://gfx.developpez.com/tutoriel/j...ing-threading/

    En quelques mots, il ne faut pas réaliser d'action longue/lourde dans le thread de Swing, en effet ta boucle while bloque toutes les opérations de rendu, donc ta ProgressBar ne se met pas à jour.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Services à domicile

    Informations forums :
    Inscription : Décembre 2008
    Messages : 89
    Par défaut
    Super merci, le :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    new Thread(new Runnable() {
          public void run() {

    Ça marche nickel, désolé de pas avoir trouvé tout seul

    Merci encore

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Attention, les appels de méthodes de composants Swing doivent par contre êtres réalisé dans le thread de Swing (appelé EDT).


    Donc les deux appels suivants doivent être englobés dans un SwingUtilities.invokeLater

    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
     
    new Thread(new Runnable() {
     
    	@Override
    	public void run() {
    		while ((chaine = fichier_source.readLine()) != null) {
    			if (total > 1) {
    				String valeur = "Ligne " + total + " .";
    				SwingUtilities.invokeLater(new Runnable() {
    					@Override
    					public void run() {
    						// TODO Auto-generated method stub
    						MaClasse.this.jLabel1.setText(valeur);
    						MaClasse.this.jProgressBar1.setValue(total);
    					}
    				});
     
    				System.out.println(total);
    				// ....
    			}
    		}
    	}
    }).start();

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/04/2014, 13h21
  2. Choix dans un selectItems et modification affichage
    Par hapalemur dans le forum JSF
    Réponses: 2
    Dernier message: 23/02/2012, 16h52
  3. [MySQL] Problème d'affichage dans un boucle while
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 25/05/2007, 08h31
  4. [CR8.5] Pbm d'affichage dans un While
    Par .:Tieri:. dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/07/2004, 10h17
  5. affichage dans le front buffers ne marche pas!
    Par jamal24 dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/08/2003, 19h14

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