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

Interfaces Graphiques en Java Discussion :

Probleme de ProgressBar


Sujet :

Interfaces Graphiques en Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Probleme de ProgressBar
    Bonjour à tous,

    Pour mon projet tuteuré je dois faire un petit moteur de recherche.
    Avant la première utilisation, l'utilisateur doit indexer les textes présents.

    Pendant l'indexation je souhaite mettre en place une JPorgressBar.
    J'ai créer une classe dans laquelle je crée ma JProgressBar, quand je l'exécute elle fonctionne bien.

    Ensuite lorsque je l'intègre à mon interface graphique général, elle ne fonctionne pas, c'est-à-dire que lorsque j'appuie sur le bouton indexer, on voit la JFrame de la barre se lancer, mais elle ne bouge pas. La JProgressBar n'a pas l'air de se mettre en place.

    D'ou peut venir ce problème ?

    Merci pour vos réponse .

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    sans voir ton code on ne peut que faire des suppositions mais ça ressemble vachement au problème décrit ici:
    http://java.developpez.com/faq/gui/?...raitement_long

    En gros ta tache longue (indexer les textes) doit être lancée dans un thread séparé, sinon le traitement prend le pas sur le rafraichissement de l'affichage qui ne se fait donc qu'une fois ton indexation terminée.(ce qui rend la progressBar inutile, m'enfin ça vaut bien les barres windows dont le temps restant augmente au fur et à mesure du temps )
    Ou alors il faut utiliser les SwingWorkers pour gérer ton traitement long.(il y a aussi une FAQ la dessus).
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    ok merci je vais regarder ca

    Par contre, j'ai oublié de préciser que seule la JProgressBar ne fonctionne, le reste (l'indexation) se fait normalement.

    Sinon je mets le code des classes concernées par le problème.

    Voici la classe qui crée la barre :

    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
    import java.io.IOException;
     
    import javax.swing.*;
     
    public class JProgressBarIndexation extends JProgressBar{
      private JProgressBar barreProgressionIndex;
      private JFrame cadre;
      private MoteurDeRecherche mdr;
     
      public JProgressBarIndexation(MoteurDeRecherche mdr) throws IOException {
    	  this.mdr = mdr;
    	  cadre = new JFrame("Indexation en cours");
    	  barreProgressionIndex = new JProgressBar(0, mdr.getRepTexte().list().length); 
    	  barreProgressionIndex.setValue(0);
    	  barreProgressionIndex.setStringPainted(true);
    	  add(barreProgressionIndex);
    	  cadre.setContentPane(barreProgressionIndex);
      }
     
     
      public void setValeur(int compteur){
    	  int val=(int)compteur*100/mdr.getRepTexte().list().length;
    	  barreProgressionIndex.setValue(val);
      }
     
      public void updateBar(int newValue) {
    	  barreProgressionIndex.setValue(newValue);
      }
     
      public void miseEnRoute() throws IOException{
    	  cadre.pack();
    	  cadre.setVisible(true);	  
    	  for (int i = 0; i < mdr.getRepTexte().list().length; i++) {
    		  final int percent = i;
    		  mdr.getI().indexer(mdr.getRepTexte().listFiles()[i], mdr.getListeMotsOutils());
    		  System.out.println("i="+i);
    		  updateBar(percent);
    		 // try {
    			/*  SwingUtilities.invokeLater(new Runnable() {
    				  public void run() {
    					  updateBar(percent);
    				  }
    			  });*/
    		/*	 java.lang.Thread.sleep(100);
    		  } catch (InterruptedException e) {
    			  System.out.println(e);
    		  }*/
     
    	  }
    	  //mdr.getR().racinise(mdr.getRepIndex());
    	 // System.out.println("termine");
    	  cadre.dispose();	
      }
     
      public static void main(String args[]) throws IOException {
    	  MoteurDeRecherche mdr = new MoteurDeRecherche();
    	  JProgressBarIndexation test = new JProgressBarIndexation(mdr);
    	  test.miseEnRoute();
      }
    }



    Voici la classe qui représente le bouton Indexer, et qui lance la JProgressBar:

    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
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.IOException;
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JProgressBar;
    import javax.swing.SwingUtilities;
     
     
    public class BoutonIndexer implements ActionListener {
    	private InterfaceGraphique ig;
    	private MoteurDeRecherche mdr;
    	private File repTexte;
    	private File listeMotsOutils;
    	private JProgressBarIndexation barreDeProgressionIndex;
     
    	public BoutonIndexer(InterfaceGraphique ig) throws IOException{
    		this.ig = ig;
    		mdr = new MoteurDeRecherche();
    		repTexte = mdr.getRepTexte();
    		listeMotsOutils = mdr.getListeMotsOutils();	
    		barreDeProgressionIndex = new JProgressBarIndexation(mdr);
     
    	}
     
     
    	public void actionPerformed(ActionEvent e) {
    		if(e.getSource() == ig.getSousMenuIndexer()){
    			try {
    				barreDeProgressionIndex.miseEnRoute();
    			} catch (IOException e1) {
    				e1.printStackTrace();
    			}
    			mdr.getR().racinise(mdr.getRepIndex());
    			System.out.println("Indexation effectue");
    			mdr.setEstIndexe(true);
    		}else{
     
    		}
    	}
     
    }

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci j'ai résolu le problème avec un Thread dans la methode actionPerformed dans la classe du bouton Indexer.

    La barre fonctionne bien avec le bouton du programme principal.

    Merci .

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai un autre souci que je pensais résoudre facilement, mais je ne trouve pas la solution

    Ma barre va de 0 a 94% (alors que normalement elle devrait aller jusqu'à 100%, je ne comprend pas pourquoi. Si quelqu'un pouvait me dire d'où ce problème vient, ça m'aiderait pas mal . Merci


    Edit : Problème résolu

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

Discussions similaires

  1. [XL-2007] Probleme chargement progressbar
    Par bapt298 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2012, 17h35
  2. Probleme de progressbar
    Par saidus dans le forum Visual C++
    Réponses: 1
    Dernier message: 17/10/2011, 09h39
  3. Probleme avec ProgressBar de Richfaces
    Par nawfal_saber dans le forum JSF
    Réponses: 1
    Dernier message: 30/07/2008, 13h45
  4. probleme avec ProgressBar
    Par k_boy dans le forum VC++ .NET
    Réponses: 8
    Dernier message: 15/09/2006, 17h19
  5. [VB.NET] [ProgressBar] Probleme de "refresh"
    Par Aspic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/05/2006, 16h15

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