Runnable et KeyListener dans la même classe
Bonjour,
voici mon problème: J'ai crée une classe qui implémente( c'est encore un peu flou pour moi) Runnable(pour la création de Thread) et KeyListenet(pour la gestion des touches du clavier, notamment les fleches)
voici la classe pour la gestion des touches:
Code:
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
import javax.swing.*;
import java.awt.event.*;
public class Touche extends JPanel implements KeyListener,Runnable{
public Touche(){
setFocusable(true);
addKeyListener(this);
System.out.println("Touche construit");
}
public void keyTyped(KeyEvent g) {}
public void keyPressed(KeyEvent g) {
if(g.getKeyCode()==KeyEvent.VK_DOWN) {
System.out.println("touche DOWN");
}
if(g.getKeyCode()==KeyEvent.VK_ESCAPE) {
System.exit(0);
}
}
public void keyReleased(KeyEvent g) {
// TODO Auto-generated method stub
}
public void run() {
// TODO Auto-generated method stub
for(;;) {
System.out.println("run de Touche");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} |
Le problème est que KeyListener impose d'avoir trois méthode dans la classe: keyReleased,keyTyped et keyPressed.
Et runnable impose la méthode Run() pour savoir ce qui est exécuté dans le thread.
Mon thread est bien bien crée, mais le clavier n'est pas vu par la classe Touche.
Comment faire pour avoir la gestion du clavier par KeyListener en Thread.?
voici mon main:
Code:
1 2 3 4 5 6
|
public static void main(String[] args) {
System.out.println("Le nom du thread principal est " + Thread.currentThread().getName());
Thread cp1 = new Thread(new Touche());
cp1.start();
} |