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 :

[JProgressBar/Thread] Ma barre apparaît après :(


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut [JProgressBar/Thread] Ma barre apparaît après :(
    J'ai un petit souci. J'ai voulu faire une fenetre avec une barre de progression (indéterminée car je ne sais pas combien de temps dure le traitement) pendant que le programme principal effectue sa tache.
    J'ai procédé comme suit : je fais appel à un thread dans lequel je lance ma fenêtre avec ma barre de progression et je lance ma tâche principale. Le problème est donc que ma fenêtre apparait après que le traitement de la tache soit terminée. Je vous donne le code incriminé :
    La tache ici consiste donc à lire un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String ligne;
    		int nombreMol = 1;
    		etat += "Analyse de " + path +"\n";
    		Thread t = new Travail();
    		t.start();
    		BufferedReader fichier = new BufferedReader(new FileReader(path));
     
        	try  { 
        		while ((ligne = fichier.readLine()) != null) {
        			if(ligne.startsWith("$$$$"))	nombreMol++;
        	    }
        	}
        	catch (Exception err){System.out.println(" Exception Fichier "+ path);}
    J'ai créé une classe qui hérite de Thread (j'ai mis la methode arret() en prevision) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Travail extends Thread	{
     
        	private PopUpInfo2 fen;
     
        	public void run()	{
        		fen = new PopUpInfo2();
        	}
        	public void arret()	{
        		fen.dispose();
        	}
     
        }
    PopUpInfo2 est la classe qui permet l'affichage dans une frame de la JProgressBar.

    Voilà, je ne vois pas trop ce qui cloche donc merci pour votre aide

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Un conseil : FAQ et recherche sur le forum...
    Ce genre de problème a été traité 1 million de fois

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Je ne demande pas comment faire parceque j'ai passé la matinée à eplucher le forum Et je pense avoir repris la solution proposée mais là, je comprends pas où je me suis planté dans mon thread.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Dans quel méthode tu appelles ton premier code ? Que fait le thread Travail ?

    PopUpInfo2 est une fenêtre ? Elle devrait alors être afficher dans l'EDT avec SwingUtilities.invokeLater()...

    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Oui, le problème vient de ce coté : je mettais la fenetre dans le thread et pas dans l'EDT donc je pense que c'est pour ça qu'elle s'affichait après. Là, je suis en train de revoir un peu la structure de mon code du coup.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 117
    Par défaut
    Bon, c'est beaucoup mieux mais j'ai un autre souci : quand ma fenetre popup apparait, l'affichage de la jframe initiale, derriere la popup, est completement perturbé (un bout dans un coin.) J'ai fait un repaint dessus mais ça ne change rien

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

Discussions similaires

  1. [Integration] Lancer un thread depuis Spring intégration après insertion message en base
    Par jamesleouf dans le forum Spring
    Réponses: 1
    Dernier message: 10/01/2014, 07h18
  2. Problème affichage JProgressBar/Thread/.bat
    Par davly dans le forum Général Java
    Réponses: 3
    Dernier message: 13/03/2012, 09h59
  3. Thread, reprendre la main après un sleep
    Par Invité1 dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 07/04/2008, 21h55
  4. Thread qui se termine aprés quelque secondes ?
    Par jackm dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 21/03/2008, 09h31
  5. Timer,Thread et barre d outil
    Par jhdscript dans le forum C++Builder
    Réponses: 4
    Dernier message: 28/11/2006, 12h20

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