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 :

Blocage de l'EDT lors du click sur un bouton


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut Blocage de l'EDT lors du click sur un bouton
    salut ,

    le problème est dans le titre , lorsque je clique sur un bouton celui ci reste enfoncé pourtant j'ai bien suivi les conseils de Roman Gui à propos de l'utilisation du Thread EDT , voici mon code :
    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
     
    private class JClickListeCommande implements ActionListener
    	{
     
    	  public void actionPerformed(ActionEvent arg0) 
    	  {
     
    	   javax.swing.SwingUtilities.invokeLater(new Runnable() {
    		public void run() 
    		{
    		      if (ficheListeCommande == null) 
    		      {
    		          ficheListeCommande = new FicheListeCommande().getVue().getFrame();
    	         	FicheP.this.bureau.add(ficheListeCommande); 
    		      }
    		     	try 
    		      	{
    		      		ficheListeCommande.setVisible(true);
    		 	        ficheListeCommande.setSelected(true);
    			}
    			catch (PropertyVetoException e) {	
     
                                                         e.printStackTrace(); }
    			      }
     
    			 });
     
     
     
     
    		}
     
    	}

  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
    Ou pas tu essayes de faire tous tes traitements dans l'EDT alrs qu'il faut faire les traitements lourds à l'extérieur et ne faire dans l'EDT que les traitements se rapportant directement à Swing

    Dans ton cas je verrais plutôt


    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
    
     
    private class JClickListeCommande implements ActionListener
        {
     
          public void actionPerformed(ActionEvent arg0) 
          {
               if (ficheListeCommande == null) 
           {
            ficheListeCommande = new FicheListeCommande().getVue().getFrame();
                FicheP.this.bureau.add(ficheListeCommande); 
               } //en supposant que cette aprtie n'intervienne pas sur l'EDT
                    
                   
           javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() 
            {
    
                     try 
                      {
                          ficheListeCommande.setVisible(true);
                         ficheListeCommande.setSelected(true);
                }
                catch (PropertyVetoException e) {    
     
                                                         e.printStackTrace(); }
                      }
     
                 });
                        
                        
                        
                
            }
            
        }

  3. #3
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    //en supposant que cette aprtie n'intervienne pas sur l'EDT
    malheureusement , elle intervient dans l'EDT .

    mais je comprend pas bien ton code ,

    normalement cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.swing.SwingUtilities.invokeLater
    veut dire de laisser le traitement à la dernière position dans la file d'attente des messages à traiter , donc le bouton ne devrait pas rester bloqué ,
    ou j'ai rien compris

  4. #4
    Membre chevronné Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Par défaut
    ça y est j'ai trouvé la solution , en fait j'avais mal lu le tuto de Guy

    il ft mettre ça :
    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
    private class JClickListeCommande implements ActionListener
    	{
     
    	  public void actionPerformed(ActionEvent arg0) 
    	  {
    		new Thread(new Runnable() {
                public void run() 
    		{  					
    	   javax.swing.SwingUtilities.invokeLater(new Runnable() {
    		public void run() 
    		{
    		      if (ficheListeCommande == null) 
    		      {
    		          ficheListeCommande = new FicheListeCommande().getVue().getFrame();
    	         	FicheP.this.bureau.add(ficheListeCommande); 
    		      }
    		     	try 
    		      	{
    		      		ficheListeCommande.setVisible(true);
    		 	        ficheListeCommande.setSelected(true);
    			}
    			catch (PropertyVetoException e) {	
     
                                                         e.printStackTrace(); }
    			      }
     
    			 });
    				
                         }	
    			}).start();		
    							
    			
    		}
    		
    	}
    le texte en rouge c'est le code que j'ai ajouté pour que le bouton ne bloque pas lors du clique dessus .

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 05/08/2009, 08h25
  2. Réponses: 0
    Dernier message: 25/08/2007, 17h32
  3. Réponses: 6
    Dernier message: 18/12/2006, 15h49
  4. Réponses: 4
    Dernier message: 04/07/2006, 14h07
  5. Réponses: 7
    Dernier message: 20/10/2005, 20h51

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