Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1056 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Problème avec un KeyListener

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec un KeyListener

n°381333
Groomy
Oisif
Posté le 03-05-2003 à 18:13:11  profilanswer
 

Je suis sur une petite application avec un perso que si déplace au clavier.
Mon problème ce situe au inveau du addKeyListener, en effet je peut taper au clavier une seule fois sur 's' (ou ça marche très bien) ensuite plus rien...
 
Voici le code (incomplet) :
 
public class Fenetre extends JFrame implements KeyListener{
 
        public Fenetre() {
                super("Projet prog, première version" );
                this.setLocation(50,50);
                this.setSize(800, 600);
                this.getContentPane().setLayout(null);
                this.gestion();
                // keyText est un JTextField
                keyText.addKeyListener(this);    
        }
         
        private void gestion() {
                //xPos et yPos> position du perso
                this.graphisme(xPos, yPos);
                keyText.addKeyListener(this);  
        }
         
        private void graphisme(int x, int y) {
                 
                this.getContentPane().setLayout(null);
                this.addPerso(x, y);
                this.addClavier();
                //addPlateau et addFond ajoute 2 images en fond
                this.addPlateau(200);
                this.addFond();    
        }
         
        private void addClavier() {
                keyText.setBounds(200,400,0,0);
                this.getContentPane().add(keyText);
        }
 
        private void addPerso(int x, int y) {
                 
                perso.setBounds(x, y, 50, 50);
                this.getContentPane().add(perso);
                 
        }
         
        public void keyTyped(KeyEvent input) {
                 
                char key = input.getKeyChar();
                System.out.println(key);
                if (key == 's';) {
                        yPos = yPos + 20;
                        System.out.println(yPos);
                        this.gestion();
                }
                 
        }
 
avec ce code le perso se déplace mais la posution augmente de 20 puis 40 lors du 2ième appuis sur 's' puis 80 etc...
 
En fait le addKeyListener je sais pas trop comment le mettre, si j'en mais un seul je ne peut appuyer qu'une seule fois sur 's' ...
 
Merci de m'éclairer

mood
Publicité
Posté le 03-05-2003 à 18:13:11  profilanswer
 

n°381397
souk
Tourist
Posté le 03-05-2003 à 22:05:32  profilanswer
 

bon deja, c'est clair, la methode addKeyListener, tu l'appelle qu'une seule fois et dans le constructeur ! sinon ca va pas aller. Si tu appelle n fois addKeyListener en passant ta Fenetre en parametre, des qu'il y a un KeyEvent, la methode keyPressed sera appelee n fois aussi.
 
Avant de repondre a tes questions, je voudrais savoir comment tu gere ton objet keyText. Il apparait partout, mais il n'est pas declare dans ta classe Fenetre. c'est pas normal ca :??:

n°381602
Groomy
Oisif
Posté le 04-05-2003 à 12:11:47  profilanswer
 

mon KeyText je l'ai déclaré mais je l'ai pas mis dans le message pour faire plus court. Tu rajoutes ça:  
 
private JTextField keyText = new JTextField(80);
 
Je sais pas si c'est très réglementaire mais j'arrive pas à faire marcher le clavier avec autre chose qu'en mettant un JTextField...
 
Donc le addKeyListener(this) je le mets ou alors? ce que je comprends pas c'est que ça marche pas seulement si j'appuie sur 's', avec le reste du clavier ça marche très bien, je peut appuyer autant de fois que je veux.

n°381666
souk
Tourist
Posté le 04-05-2003 à 13:30:26  profilanswer
 

ben oui, mais le problemen, c'est que quand ton JTextfield n'a pas le focus, il ecoute pas le clavier et ne lance pas d'evenement...
 
il faut donc que ce soit ta Fenetre qui ecoute le clavier


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Problème avec un KeyListener

 

Sujets relatifs
probleme de despecialisation[JAVA] Socket UDP et InputStream, probleme de read
[PHP-MYSQL] J'ai un problème que je n'arrive pas à résoudre SVPGros problème de transfert de BDD MySQL !
[C/C++] Sockets en UDP, problème d'envoi à une IP[PHP]Probleme d'execution de script avec Easy Php
probleme avec une boucle[ Python ] problème libftp [ resolu ]
[C] Probleme d'édition de lienproblème avec la mise à jour de données en VB avec ADO
Plus de sujets relatifs à : Problème avec un KeyListener


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR