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

AWT/Swing Java Discussion :

[Applet] problème de récupèration des évenement clavier


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut [Applet] problème de récupèration des évenement clavier
    Bonjour,

    Je dois développer une applet en java avec JBuilder. J'ai besoin de récupèrer les touches qui ont été appuyées par l'utilisateur. Pour cela j'avais utiliser la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public boolean keyDown(Event evt, int key) { }
    Mais j'ai remarqué qu'il ne faut plus utilisé cette fonction depuis la version 1.1, je dois donc utilisé la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected void processKeyEvent (KeyEvent e) { }
    Voila donc ce que j'ai fait ... mais ca ne marche pas

    Dans le code d'initialisation, j'active les évenement KEY_ACTION et KEY_PRESS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void init() {
            enableEvents(Event.KEY_ACTION|Event.KEY_PRESS);
        }
    et ensuite, j'utilise la fonction processKeyEvent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    protected void processKeyEvent (KeyEvent e){
            System.out.println("Une touche à été appuyée");
        }
    maintenant quelqu'un s'est-il pourquoi ca ne marche pas ???

    Merci d'avance .... et bonne soirée[/code]

  2. #2
    Membre éclairé Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Points : 757
    Points
    757
    Par défaut
    Hum, jvois pas vraiment d'ou viennent ces fonctions.

    Pour ma part j'utiliserai plus un KeyListener permettant de detecter les pressions de touches sur lies a l'applet.
    Puis tu implemente la methode KeyPressed ou encore Keyreleased selon tes besoins ...

    A etudier, jvais quand même aller faire un tour sur l'api pour voir ce que font tes fonctions
    See you, space cowboy... and if you're satisfied, click on

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    Salut,

    moi ce que j'aurais fait c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    monApplet.addKeyListener(new KeyAdapter()
       {
          public void keyTyped(KeyEvent e)
          {
             // Actions a effectuer
          }
       });
    Si tu as d'autres question ou si ca ne réponds pas a ton pb, n'hésite pas a redemander, mais met un peu de ton code stp.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    En faite, j'aimerais refaire la meme chose que ca :
    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
        public boolean keyDown(Event evt, int key) {
            switch(key)
            {
            case Event.UP:
                posPhotoY -= pictureSize;
                break;
     
            case Event.DOWN:
                posPhotoY += pictureSize;
                break;
     
            case Event.RIGHT:
                posPhotoX += pictureSize;
                break;
     
            case Event.LEFT:
                posPhotoX -= pictureSize;
                break;
     
            case Event.HOME:
                posPhotoX = 0;
                posPhotoY = 0;
                break;
            }
            movePicture.MovePicture(picture, posPhotoX, posPhotoY);
            return true;
        }
    Mais avec les nouvelles fonctions. J'ai pas trouvé mon bonheur avec google car tout le monde fait différement. J'avais pensé que je pouvais le faire avec processKeyEvent.

    @Bizur : Oui, j'ai essayé d'utiliser KeyListener mais tout le monde l'utilise différement et c'est pas facile de trouvé la doc dessus.
    J'ai bien essayé ca :

    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
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    public class MonApplet extends JApplet implements KeyListener {
     
     public void init()
     {
        addKeyListenener(this);
     }
     
    void  keyPressed(KeyEvent e) {}
    void  keyReleased(KeyEvent e) {}
    void  keyTyped(KeyEvent e)  {
      System.out.println("Une touche à été appuyée");
    }
    }
    Mais ca ne donne rien, l'applet ne réagit pas

    @thulsadoom : Merci pour t'as réponse mais il me fait <identifier> expected

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par muldoon
    il me fait <identifier> expected
    A quel endroit exactement?

    Parceque normalement si tu remplaces ce que j'avais noté //actions par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    switch (e.getKeyCode())
    {
    case KeyEvent.VK_UP:
    // ...
    ca devrait marcher

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    ben mon applet ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class PictureCPNV extends Applet implements KeyListener{}
    donc j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        PictureCPNV.addKeyListener(new KeyAdapter()
           {
              public void keyTyped(KeyEvent e)
              {
                 // Actions a effectuer
              }
       });
    mais il me fait un "<identifier> expected" entre "addKeyListener" et "new KeyAdapter() " ... sur la parenthèse

    Faut-il ajouter autre chose que ce bout de code ? (import, ...)
    Est-ce juste de faire un implements KeyListener ?
    Faut-il le mettre a un enfroit spécial ?

    Merci pour toutes tes réponses

  7. #7
    Membre régulier Avatar de jiraiya
    Inscrit en
    Mai 2002
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 100
    Points : 116
    Points
    116
    Par défaut
    c'est normal enlève les parenthèes après KeyAdapter et tout ira bien normalement

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 34
    Points : 40
    Points
    40
    Par défaut
    Je pense que ton probleme vient du fait que tu essaies de mettre ton ecouteur sur ta classe PictureCPNV et non sur une de ses instances.
    Tu devrais plutot avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class PictureCPNV extends Applet {
     
        // Le this est inutile, c'est juste pour que tu voies bien la difference
        // entre la classe et l'instance
        this.addKeyListener(new KeyAdapter()
           {
              public void keyTyped(KeyEvent e)
              {
                 // Actions a effectuer
              }
       });
    }
    Sinon, entre le "implements KeyListener" et le "new KeyAdapter() ..." , il y a un truc en trop. En fait, qd tu fait implements keylistener, c'est pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class PictureCPNV extends Applet implements KeyListener{
     
        addKeyListener(this);
     
        public void KeyPressed(KeyEvent e){ /*...*/ }
        public void KeyReleased(KeyEvent e){ /*...*/ }
        public void KeyTyped(KeyEvent e){ /*...*/ }
     
     
    }
    Mais l'ennui, c'est que l'interface KeyListener a 3 methodes a implementer. Donc en général, on préfère avoir recourt aux adapteurs fournis, qui implémentent chacune des méthodes de l'écouteur correspondant avec un comportment nul. Du coup il suffit de surcharger la/les fonction(s) qui t'intéressent, et seulement celles la. Et comme ton PictureCPNV hérite déjà de JApplet et que java n'accepte pas d'heritage multiple, tu ne peux pas faire "PictureCPNV extends KeyAdapter". Donc on utilise une classe anonyme.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Merci thulsadoom ... j'ai utilisé t'as 2ème méthodes .... elle marche très bien ... merci

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 27/07/2006, 13h51
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [SQL] Problème de récupération des valeurs d'une liste multiple en php
    Par BOLARD dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/05/2006, 00h29
  4. Réponses: 2
    Dernier message: 31/03/2006, 09h23
  5. Réponses: 3
    Dernier message: 06/10/2005, 16h46

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