URL: https://linuxfr.org/forums/programmation-java/posts/jarrive-pas-%C3%A0-r%C3%A9cup%C3%A9rer-un-%C3%A9venement-clavier-dans-une-fen%C3%AAtre Title: J'arrive pas à récupérer un évenement clavier dans une fenêtre Authors: Ontologia Date: 2005年05月28日T19:11:34+02:00 Tags: Score: 0 Je suis en train d'écrire un petit jeu, et j'ai besoin d'une bête classe qui me crée une fenêtre toute simple dans laquelle je vais pouvoir afficher des rectangles et qui me récupère les évenements clavier, à moins que ce soit carrément la classe Main qui les récupère (ça m'arrangerait d'ailleurs). Ces évènements sont très simple, je veux simplement récupérer le code caractère de la touche frappée, cela suffit à mes besoins. J'ai pas mal cherché et j'ai utilisé un tutoriel expliquant comment gérer des rectangles vectoriellement (je les déplace librement). Ca marche bien. Le problème est que je n'arrive pas à récupérer les évenements clavier de ma fenêtre J'ai le code suivant (de main.java) package testuih2; import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.KeyListener; import java.awt.event.KeyEvent; import testuih2.GUIHelper; import testuih2.IDrawable; import testuih2.JCanvas; import testuih2.RectangleDrawable; public class Main implements KeyListener{ £spaces£ £/spaces£ £spaces£ £/spaces£static JCanvas jc = new JCanvas(); £spaces£ £/spaces£IDrawable rect2; £spaces£ £/spaces£public Main () { } £spaces£ £/spaces£ £spaces£ £/spaces£public static void main (String[] args) { £spaces£ £/spaces£jc.setBackground(Color.WHITE); £spaces£ £/spaces£jc.setPreferredSize(new Dimension(400,200)); £spaces£ £/spaces£Dimension dim =new Dimension(40,60); £spaces£ £/spaces£IDrawable rect = new RectangleDrawable(Color.RED,new Point(10,10),dim); £spaces£ £/spaces£ £spaces£ £/spaces£jc.addDrawable(rect); £spaces£ £/spaces£ £spaces£ £/spaces£GUIHelper.showOnFrame(jc,"test JCanvas"); £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£public void keyTyped(KeyEvent e) { £spaces£ £/spaces£ £spaces£ £/spaces£System.out.print ("Event clavier trouvé"); £spaces£ £/spaces£System.out.print (e.getKeyChar ()); £spaces£ £/spaces£Dimension dim2 =new Dimension(40,60); £spaces£ £/spaces£rect2 = new RectangleDrawable(Color.RED,new Point(25,30),dim2); £spaces£ £/spaces£} £spaces£ £/spaces£ £spaces£ £/spaces£public void keyPressed(KeyEvent e) { £spaces£ £/spaces£System.out.print ("KEY PRESSED: "); £spaces£ £/spaces£System.out.print (e.getKeyChar ()); £spaces£ £/spaces£} £spaces£ £/spaces£public void keyReleased(KeyEvent e) { £spaces£ £/spaces£System.out.print ("KEY RELEASED: "); £spaces£ £/spaces£System.out.print (e.getKeyChar ()); £spaces£ £/spaces£} } J'ai pensé que implémenter KeyListener directement dans main, me permettrait d'attraper ces foutus évenements clavier. J'ai essayé la même chose dans Canvas, ça ne donne rien. J'ai aussi essayé de créer une classe EcouteurClavier l'implémentant, avec les mêmes méthodes KeyPressed, etc... Franchement je suis bloqué, Pourriez vous SVP m'expliquer la logique, parce que je comprend pas trop là... Merci !

AltStyle によって変換されたページ (->オリジナル) /