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 :

implementer un KeyListener dans un thread


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut implementer un KeyListener dans un thread
    salut
    j'ai un programme avec trois classes:
    premiere classe gere la communication liaison série et grace a un bouton j'envoi la commande et je recoi la reponse dans un jTextarea.

    ma deuxieme classe est un thread ou je dois implementer un key listener pour interrompre la liaison série a tout moment.

    comment coder ce keylistener dans le thread j'ai ce programme mais j'arrive pas a intercepter la touche clavier pour executer la fermeture de la comm...

    voila le code du thread!!!

    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
    //*************************************************
    package communication;
     
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
     
    public class escape extends Thread implements KeyListener {
     
    		public escape (){
     
    		}
     
    		public void run(){
    			for(int i=0;i<1000000000;i++){
     
    				System.out.println("comm!!!!!!!");
    			}
    		}
     
    		public void keyReleased(KeyEvent a) {
    			// TODO Auto-generated method stub		
    		}
     
     
    		public void keyTyped(KeyEvent arg0) {
    			// TODO Auto-generated method stub
     
    		}
     
    		public void keyPressed(KeyEvent e) {
    			if (e.getKeyCode()==KeyEvent.VK_ESCAPE){
    				System.out.println("qdfqgsdfg");
    			}
     
    		}
    }
    //**************************************
    une partie du code de la comm (bouton d'envoi de la commande) !!!!

    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
    private CMaButton getJButton() {
    		if (jButton == null) {
     
    			jButton = new CMaButton();
    			jButton.setText("Envoyer");
    		jButton.setBounds(new Rectangle(48, 126, 79, 26));
    		jButton.setMnemonic(KeyEvent.VK_E);
     
    		jButton.addActionListener(new java.awt.event.ActionListener() {
    		public void actionPerformed(java.awt.event.ActionEvent e) {				
    		Commande = jTextField.getText();	
    		escape C1 = new escape();
    		C1.start();
    		itement = new C_traitement(Commande + "\r");
    		jTextArea.setText(traitement.execute());}});			
     
    }
    		return jButton;
    	}

    merci d'avance pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    toujours bloqué !!
    personne ne sait comment faire....

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    A quel moment tu ajoutes le KeyListener ?

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    je le rajoute dans la classe escape qui est un thread et en fait que je fais le star il execute le run. mais il detecte pas l'appui sur une touche !!!!

  5. #5
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 11
    Par défaut
    normalement il doit executer le code qui correspond au key pressed
    merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Dans l'exemple que tu donnes, je ne vois pas comment tu peux voir la trace sur l'appui touche.
    D'une part, tu ne fais pas d'enregistrement du listener sur le bouton (ni dans actionPerformed, ni dans la classe escape).
    D'autre part, la boucle qui tu as mis dans escape.run() affiche des millions traces sans interruption. Dans de telles conditions, la trace sur l'appui touche passe forcement inapercue.

    Peut être que le code que tu as posté est un peu trop simplifié. Sinon, ca pourrait être un bonne piste pour ton problème.

Discussions similaires

  1. impossible d'utiliser un HWND parent dans un thread
    Par sylvain114d dans le forum Windows
    Réponses: 12
    Dernier message: 23/09/2004, 12h21
  2. Synchronize bloquant dans un thread
    Par bencot dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2004, 16h42
  3. [Process]Execution de process dans un thread
    Par devjava dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 18/06/2004, 10h34
  4. erreur d'un timer declaré dans un thread
    Par hak5 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/04/2004, 09h20
  5. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25

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