Interface KeyListener

Signaler
Messages postés
7
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
21 mars 2010
-
Messages postés
4
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
26 avril 2010
-
Bonjour tout le monde, alors voila j'ai une JFrame qui implémente l'interface KeyListener et je lui ajoute 3 écouteurs, elle-même et les JPanel qu'elle contient et pourtant je n'ai aucune réaction de la méthode keyPressed. Si quelqu'un pouvait m'éclairer ...


package snake;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class AppliSnake extends JFrame implements KeyListener, ActionListener{
    private static final int CADRE_MENU 0, CADRE_JEU 1, CADRE_SCORES = 2, CADRE_OPTIONS = 3;
    private JPanel cadre = new JPanel();
    private CadreMenu menu;
    private CadreJeu jeu;
    private int cadreCourant;
    
    public AppliSnake(){
        
        this.setTitle("Snake");
        this.setSize(400, 320);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        
        this.cadre.setLayout(new BorderLayout());      
        this.initCadre(CADRE_MENU);
        // Ajout de KeyListener   1  !!!!!!!!!!                   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        this.addKeyListener(this);
        this.setVisible(true);
    }
    
    // Modifie le contenu de la fenetre
    public void initCadre(int x){
        this.cadre.removeAll();
        switch (x) {
            case CADRE_MENU :
                this.menu = new CadreMenu();             
     // Ajout de KeyListener   2 !!!!!!     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                this.menu.addKeyListener(this);                
                this.cadre.add(this.menu,BorderLayout.CENTER);     
     // Ajout de KeyListener  3 !!!          <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                this.cadre.addKeyListener(this);
                this.setContentPane(this.cadre);

                this.cadreCourant = CADRE_MENU;
                this.menu.getBtStart().addActionListener(this);
                this.menu.getBtScores().addActionListener(this);
                this.menu.getBtOptions().addActionListener(this);
                break;
            case CADRE_JEU :  
                this.jeu = new CadreJeu();
                this.cadre.add(this.jeu,BorderLayout.CENTER);
                this.setContentPane(this.cadre);
                this.cadreCourant = CADRE_JEU;
                break;
            case CADRE_SCORES :
                
                break;
        }
        this.repaint();                 
    }
    
    /*********************************************************************
     ********************* Interface KeyListener    **********************
     *********************************************************************/
    public void keyPressed(KeyEvent event){
        System.out.println("Code touche pressée : " + event.getKeyCode() + 
                        " - caractère touche pressée : " + event.getKeyChar());
    }
    public void keyReleased(KeyEvent event){}
    public void keyTyped(KeyEvent event){}
    
    /*********************************************************************
     ********************* Interface ActionListener    **********************
     *********************************************************************/
    public void actionPerformed(ActionEvent arg0) {                
        if (this.cadreCourant == CADRE_MENU){
            if(arg0.getSource() == this.menu.getBtStart()){this.initCadre(CADRE_JEU);}         
            if(arg0.getSource() == this.menu.getBtScores()){}
            if(arg0.getSource() == this.menu.getBtOptions()){}
        }
   }  
    public static void main(String[] args) {
        new AppliSnake();
    }
}

2 réponses

Messages postés
7
Date d'inscription
dimanche 13 avril 2008
Statut
Membre
Dernière intervention
21 mars 2010

Après quelques tests je me suis rendu compte que si la méthode keyPressed ne se déclenche pas c'est parce que ma fenêtre contient plusieurs JButton. Quelqu'un pourrait-il m'expliquer pourquoi l'interface KeyListener ne fonctionne pas lorsque qu'il y a des boutons sur la même fenêtre ?
Messages postés
4
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
26 avril 2010

Salut, j'ai le meme probleme je pense. As-tu trouvé la solution?

Romain.