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 :

[JLabel] Problème de rafraichissement en cours de traitement


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Par défaut [JLabel] Problème de rafraichissement en cours de traitement
    Bonjour

    je rencontre un petit soucis dans mon applet java, en effet j'effectue à un moment un enregistrement d'un texte qui peut prendre du temps, et je souhaiterai afficher une petite fenetre marquand traitement en cours ou quelque chose du genre.

    hors pour le moment cette fenêtre apparait bien, mais le message n'y est mis qu'à la fin du traitement, ce qui est plutot génant.

    voici mon code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public static void actionSauvegarde () {
     
    JThread myThread = new JThread(); 
     
    myThread.run(); 
     
    // tout mon traitement 
     
    myThread.interrupt(); 
    }
    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
     
     
     
    public class JThread extends Thread {
     
     
     
     
    		PopUp _popUp;
            public void run() {
            	_popUp = new PopUp("Enregistrement en Cours");
     
            }
     
            public void interrupt()
            {
                super.interrupt();
                _popUp.hide(); 
     
            }
     
    	}

    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
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Toolkit;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JWindow;
     
     
     
    public class PopUp extends JWindow{
    	private JLabel jLabel; 
     
    	public PopUp (String message) {
    		//super("Enregistrement en cours");
    		jLabel = new JLabel(message); 
     
    		this.setSize(200, 50); 
    		this.getContentPane().add(jLabel,BorderLayout.CENTER);
    		jLabel.revalidate(); 
    		this.setLocationRelativeTo(Main.getApplet()); 
    		this.setVisible(true); 
    		this.validate(); 
     
    	}
     
     
    }

  2. #2
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 64
    Par défaut
    As-tu regardé du côté de SwingWorker ?

  3. #3
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Bien que je ne fasse pas d'Applet, ce que tu décrit est assez caractéristique d'un appel Swing hors de l'EDT. FAQ

    Peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EventQueue.invokeLater(new Runnable() {
          	public void run() {
          	      	_popUp = new PopUp("Enregistrement en Cours");
          	}
    });

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 911
    Billets dans le blog
    54
    Par défaut
    Il ne faut jamais manipuler directement les composant Swing dans une autre Thread que l'EDT !
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 15
    Par défaut
    Salut,

    J'avais le même problème avec un calcul. J'ai posté la solution dans le forum "EDT SwingWorker" et la discussion doit s'appeler "[SwingWorker][JLabel] Rafraîchissement du contenu" si je me trompes pas. Essaye de l'adapter à ton code et ça devrait marcher.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 10
    Par défaut
    Citation Envoyé par bouye Voir le message
    Il ne faut jamais manipuler directement les composant Swing dans une autre Thread que l'EDT !
    C'est pour ça qu'on utilise awt.EventQueue.invokeLater(Runnable)
    Où que tu sois c'est l'EDT qui fera le traitement !

Discussions similaires

  1. [MFC] Problème de rafraichissement,
    Par pykoon dans le forum MFC
    Réponses: 1
    Dernier message: 27/04/2005, 07h21
  2. Problème de rafraichissement.
    Par beyo dans le forum ASP
    Réponses: 5
    Dernier message: 18/03/2005, 16h27
  3. [SWING] Problème de rafraichissement
    Par david71 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/05/2004, 15h38
  4. [JTree]problème de rafraichissement
    Par peppena dans le forum Composants
    Réponses: 9
    Dernier message: 20/01/2004, 14h06
  5. Toujours un problème de rafraichissement de DBGrid
    Par tripper.dim dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/12/2002, 13h15

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