cs_Romain62
Messages postés7Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention21 mars 2010
-
21 mars 2010 à 17:16
darkme08
Messages postés4Date d'inscriptionvendredi 25 avril 2008StatutMembreDernière intervention26 avril 2010
-
26 avril 2010 à 18:40
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();
}
}
cs_Romain62
Messages postés7Date d'inscriptiondimanche 13 avril 2008StatutMembreDernière intervention21 mars 2010 21 mars 2010 à 17:53
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 ?