A voir également:
- Java , thread keyevent entrée touche
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Touche rémanente - Guide
- Java apk - Télécharger - Langages
- Touche insert - Guide
1 réponse
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
10 août 2011 à 15:53
10 août 2011 à 15:53
Pfiou... Y en a du ménage à faire là dedans !
Déjà gros soucis numéro 1, tu ne peux pas intercepter des évènements comme KeyListener sur la console, il te faut une interface awt ou swing pour cela !
Ensuite, l'utilisation des threads avec une attente active est totalement contraire au mode de fonctionnement des évènements !
Bref, voici une manière simple et propre de faire à peu près ce que tu veux :
Déjà gros soucis numéro 1, tu ne peux pas intercepter des évènements comme KeyListener sur la console, il te faut une interface awt ou swing pour cela !
Ensuite, l'utilisation des threads avec une attente active est totalement contraire au mode de fonctionnement des évènements !
Bref, voici une manière simple et propre de faire à peu près ce que tu veux :
import java.awt.Dimension; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JLabel; public class Ecoute extends JFrame implements KeyListener { private static final long serialVersionUID = 1L; /** * Zone de texte pour afficher un message dans la fenêtre. */ private final JLabel label; /** * Affiche un message sur la zone de texte et la console. * @param msg le message à afficher */ private void afficher(String msg) { System.out.println(msg); label.setText(msg); } /** * Une fenêtre sur laquelle on clique pour afficher la touche appuyée. * @param titre le titre de la fenêtre * @param tailleX la largeur de la fenêtre * @param tailleY la hauteur de la fenêtre */ public Ecoute(String titre,int tailleX,int tailleY) { // Définition de la fenêtre setTitle(titre); setSize(new Dimension(tailleX,tailleY)); setLocationByPlatform(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); // Ajout de la zone de texte label = new JLabel(); add(label); // Interception des évenements clavier addKeyListener(this); } /** * Action à faire si une touche est pressée. * @param e informations sur la touche pressée */ @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_DOWN : afficher("Bas"); break; case KeyEvent.VK_LEFT : afficher("Gauche"); break; case KeyEvent.VK_RIGHT : afficher("Droite"); break; case KeyEvent.VK_UP : afficher("Haut"); break; default : afficher("["+e.getKeyCode()+"]"); } } /** * Action à faire si une touche est relachée. * @param e informations sur la touche relachée */ @Override public void keyReleased(KeyEvent e) { } /** * Action à faire si une touche tapée. * @param e informations sur la touche tapée */ @Override public void keyTyped(KeyEvent e) { } /** * Affiche une fenêtre et les touches du clavier si on clique dessus. */ public static void main(String...args) { new Ecoute("Tapez au clavier !",300,200); } }
11 août 2011 à 12:17
je suis debutant et je fait un stage dans une societe ou ils ne savent pas de quoi ils parlent en me demandant de faire des chose pas possible.
maintenant je sait que l on ne peut pas faire le truc sur la console, merci