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

Langage Java Discussion :

KeyListener en ligne de commande


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut KeyListener en ligne de commande
    Bonsoir,

    Dans un programme en ligne de commande, je souhaite sortir d’une boucle infinie lorsque l’utilisateur appuie sur une touche définie. J’ai donc implémenté KeyListener, mais mon programme ne fonctionne pas . Est-ce que les listeners fonctionne en ligne de 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    public class Calcul extends Frame implements KeyListener{
     
    public void TestCalculTemps() {
    	addKeyListener(this);
    	while (true) {
    		try {
    			AjoutTempsTotal();
    			Thread.sleep(t * 1000);
    		} catch (InterruptedException eI) {
    			System.out.println("Erreur : " + eI.getMessage() + eI.getLocalizedMessage() + eI.getCause());
    		}
    	}
    }
     
     
     
     
    public void keyPressed(KeyEvent arg0) {
    	System.out.println("keyPressed");
    }
     
     
    public void keyReleased(KeyEvent arg0) {
    	System.out.println("keyReleased");
                 if(e.getKeyCode()==KeyEvent.VK_Q)
                 {System.exit(0);}
    }
     
     
    public void keyTyped(KeyEvent arg0) {
    	System.out.println("keyTyped");		
    }
     
     
    }

    C'est sans doute une erreur de débutant...

    En tout cas merci d'avance pour votre aide !

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Coucou,

    Je crois que les listeners ne peuvent être utilisés que pour les Interfaces graphiques au premier plan, donc apres les avoir initialisées et appellé setVisible(true);.

    Fred

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut
    Citation Envoyé par mavina Voir le message
    Coucou,

    Je crois que les listeners ne peuvent être utilisés que pour les Interfaces graphiques au premier plan, donc apres les avoir initialisées et appellé setVisible(true);.
    Malheureusement, ca ne fonctionne pas en mettant setVisible(true) ...


    Citation Envoyé par mavina Voir le message
    Coucou,
    Comme ca sans savoir ce que tu fais dans ta boucle, je dirais de faire un thread qui effectue ton traitement dans une boucle qui vérifie un booleen, et ta ligne de commande qui attend un caractere, et des que ce caractere est rentré, le booleen passe a false et ta boucle dans ton thread s'arrette.
    Le problème, c'est que je ne sais pas comment attendre un caractère sans que ca soit bloquant (que la ligne de commande attende une reponse de l'utilisateur)

  4. #4
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    C'est justement ça, pendant que ton utilisateur est bloqué à ne pouvoir qu'écrire, le traitement se fait en arrière plan avec le thread que tu auras créé.

    Fred

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut
    C'est à dire que si je change le booléen, il sera automatiquement changé dans mon Thread aussi ? Mon booléen sera une variable partagée alors ?

    Merci pour ton aide !

  6. #6
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    oui, la variable sera partagée.

    http://viennet.developpez.com/cours/java/thread/ ici un tutoriel sur les threads

    Fred

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut
    Merci

    Citation Envoyé par Sylk Voir le message
    Bonsoir,

    Dans un programme en ligne de commande, je souhaite sortir d’une boucle infinie lorsque l’utilisateur appuie sur une touche définie.
    Comment je peux faire ce traitement sans Listeners ?

  8. #8
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Comme ca sans savoir ce que tu fais dans ta boucle, je dirais de faire un thread qui effectue ton traitement dans une boucle qui vérifie un booleen, et ta ligne de commande qui attend un caractere, et des que ce caractere est rentré, le booleen passe a false et ta boucle dans ton thread s'arrette.


    Fred

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

Discussions similaires

  1. Encapsulation graphique d'un outil en ligne de commande
    Par Leishmaniose dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/11/2003, 11h59
  2. Comment compiler un projet en ligne de commande ?
    Par mathieutlse dans le forum EDI
    Réponses: 3
    Dernier message: 11/07/2003, 13h32
  3. Réponses: 3
    Dernier message: 07/04/2003, 20h06
  4. Récuperer Arguments sur la ligne de commande ?
    Par Muetdhiver dans le forum x86 16-bits
    Réponses: 9
    Dernier message: 20/01/2003, 21h01
  5. Analyser la ligne de commande
    Par benj29 dans le forum C
    Réponses: 14
    Dernier message: 19/11/2002, 04h13

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