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:
Le problème est que KeyListener impose d'avoir trois méthode dans la classe: keyReleased,keyTyped et keyPressed.
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
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(); } } } }
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
Partager