Lorsque je lance mon applet, je n'obtiens aucune réponse de la part de l'écouteur de touche. Comment puis-je réparer ça? Voici le code.Applet - KeyListener ne fonctionne pas
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Timer;
import java.util.TimerTask;
public class Main extends Applet {
private static final long serialVersionUID = 1L;
public String mode = "";
public Graphic gr;
public void init() {
this.setSize(400, 400);
gr = new Graphic();
this.add(gr);
gr.addKeyListener(new MyKeyListener());
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
gr.requestFocus();
gr.repaint();
}
};
new Timer().scheduleAtFixedRate(timerTask, 0, 1000/5);
}
public void paint(Graphics g) {
}
private class MyKeyListener extends KeyAdapter {
public MyKeyListener(){
System.out.println("HELLO");
}
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
gr.direction = Graphic.Direction.up;
gr.move();
break;
case KeyEvent.VK_DOWN:
gr.direction = Graphic.Direction.down;
gr.move();
break;
case KeyEvent.VK_LEFT:
gr.direction = Graphic.Direction.left;
gr.move();
break;
case KeyEvent.VK_RIGHT:
gr.direction = Graphic.Direction.right;
gr.move();
break;
}
}
public void keyReleased(KeyEvent e) {
}
}
}
* « Je ne reçois aucune réponse de l'auditeur clé. » * Code donné comme 'peinture public void (Graphics g) { }' I Je suis surpris que vous obtenez quelque chose. 1) Pourquoi AWT au 3ème millénaire? 2) Pourquoi applet plutôt que cadre? 3) Pourquoi 'KeyListener' à la place des raccourcis clavier? 4) Pourquoi aucun appel à une méthode mentionnant 'focus'? Voir le tutoriel [focus] (http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html) pour plus de détails. - Il semble que vous essayez de «coder par magie» lorsque cela ne fonctionne généralement pas. –
'this.setSize (400, 400);' Et ne fais pas ça. Une taille d'applet est définie par des attributs en HTML. –
Essayer d'attirer l'attention en utilisant une minuterie comme celle-ci est une idée horrible à tout moment, ne jamais le faire (je sais "juste un test" - mais la déclaration est maintenue). Évitez les écouteurs clés et favorisez [les raccourcis clavier] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) ils ne souffrent pas autant des mêmes problèmes de focus que ceux de 'KeyListener's – MadProgrammer