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 :

Problème avec KeyListener


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Par défaut Problème avec KeyListener
    Bonjour,

    Je cherche à faire quelque chose de simple :

    quand je presse la flèche du haut, cela doit incrémenter une valeur et quand je presse celle du bas, cela doit décrémenter la valeur.

    J'ai recherché des solutions pour ce faire en java et j'ai trouvé la classe KeyListener.

    Dans ma classe qui contient la valeur que j'incrémente, j'ai écrit ceci :

    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
    class C_KeyBoardListener implements KeyListener {
     
    		private C_Point point;
     
    		public C_KeyBoardListener(C_Point in_point) {
    			this.point = in_point;
    		}
     
    		public void keyPressed(KeyEvent event) {
     
    			System.out.println ("PRESSEEEEEED");
     
    			if (event.getKeyCode() == KeyEvent.VK_KP_DOWN) {
    				this.point.setZ(this.point.getZ() - 10);
    			} else if (event.getKeyCode() == KeyEvent.VK_KP_UP) {
    				this.point.setZ(this.point.getZ() + 1);
    			}
    		}
     
    		public void keyReleased(KeyEvent arg0) {
    		}
     
    		public void keyTyped(KeyEvent arg0) {
    		}
    	}

    Pour que cela fonctionne, si j'ai bien compris, il faut que j'ajoute un 'addKeyListener' dans la classe qui écoute mais le soucis c'est qu'écrire : 'this.addKeyListener' ne marche pas.

    Je suis un peu perdue et je ne vois que des exemples avec des jTextField alors que mon application est bien plus simple.

    Comment faire ?

    Je vous remercie par avance pour votre aide.

    Bonne journée

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Tu ne peux pas l'ajouter à la classe, il faut la mettre sur un composant 'focusable' : bouton, panel, textfield...=)

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Par défaut Re:
    C'est ce que j'ai fait en créant un Jtextfield vide et n'étant sur aucun container vu que ma classe n'a aucun rapport avec les frame.

    Mais quand je fais alors l'ajout du keylistener à cet objet, rien du tout ne se passe lorsque j'appuie sur les touches.

    Comment ça se fait ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Lyadrielle Voir le message
    C'est ce que j'ai fait en créant un Jtextfield vide et n'étant sur aucun container vu que ma classe n'a aucun rapport avec les frame.
    Dans ce cas, comment pourrait-il être possiblement concerné par les évènements clavier ou souris ?

    L'écoute doit se faire par quelque chose qui a bel et bien un rapport avec les frames.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Par défaut Re:
    Mais, ainsi donc je ne peux pas faire de programmes tout bêtes en JAVA, sans utiliser les frame ?

    Je veux juste augmenter ou diminuer une valeur avec des touches du clavier. Je ne comprends pas pourquoi cela semble si compliqué. Surtout que j'utilise des frame autre part et que cette classe là (qui fait les calculs), n'a aucun rapport avec le côté graphique de mon programme.

    Elle paramètre les valeurs puis les manipule quand l'autre classe, liée aux frames, se charge du graphique.

  6. #6
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Si tu ne veux pas utiliser de fenêtre graphique, tu peux toujours utiliser la console.

    Un truc tout bête, tu fais un scanner qui prend System.in et si tu reçois un 'p' tu incrémentes, si tu reçois un 'm' tu décrémentes.

    Un test if tout simple te permet de le faire. (Comparaison des String avec equals hein)

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Lyadrielle Voir le message
    Mais, ainsi donc je ne peux pas faire de programmes tout bêtes en JAVA, sans utiliser les frame ?
    Si, du moment que les évènements d'IHM graphiques tels que les appuis de touche ne t'intéressent pas.

    Citation Envoyé par Lyadrielle Voir le message
    Je voulais plutôt quelque chose comme une interruption dès que l'on tape sur une touche. Comment faire ?
    Avec une fenêtre concernée par cet appui de touche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème avec KeyListener
    Par mesbec dans le forum Général Java
    Réponses: 6
    Dernier message: 19/07/2013, 16h00
  2. Problème de rapidité avec KeyListener et repaint()
    Par Epiliptik dans le forum Composants
    Réponses: 3
    Dernier message: 14/06/2013, 18h40
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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