Bonsoir,
Je voudrais détécter qu'une touche de clavier est appuyée puis afficher le
code de cette touche (ex F1.. etc)avec System.out.println
Tout ça dans la methode main sans passer par les interfaces graphiques.
comment faire ?
merci d'avance
Bonsoir,
Je voudrais détécter qu'une touche de clavier est appuyée puis afficher le
code de cette touche (ex F1.. etc)avec System.out.println
Tout ça dans la methode main sans passer par les interfaces graphiques.
comment faire ?
merci d'avance
alors je suis preneur d'une solution facile pour arriver à mon but
Salut quelle plateforme est visée ? Tu peux éventuellement regarder charva qui possède des KeyListener aussi. A voir si c'est utlisable dans ton cas.
A plus
As-tu regarder du coté de system.in? L'entrée par défaut c'est le clavier.
En faisant quelque chose dans ce genre là:
C'est surement à amèliorer, c'est juste un idée comme ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int touche; BufferedInputStream monClavier=new BufferedInputStream(System.in); while((touche=monClavier.read())!=-1){ System.out(touche); if(touche=='q'){ monClavier.close() } }
Merci pour l'idée j'ai mis le code suivant:
Le résultat affiche "start". Après, il reste bloqué sur la ligne du While, pas d'exception ni rien. même en déboguant il reste bloqué sur la ligne while et n'avance pas.
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 package com.sdsi; import java.io.BufferedInputStream; import java.io.IOException; public class Touche { public static void main (String args[]){ System.out.println("start"); int touche; BufferedInputStream monClavier = new BufferedInputStream(System.in); try { while((touche = monClavier.read())!=-1){ System.out.println("while"); System.out.println(touche); if(touche=='q'){ monClavier.close(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("end"); } }
Si l'application n'a pas le focus, cela ne fonctionnera pas. Or elle ne possède pas de fenêtre, donc cette technique est inopérante.
Tu dois passer par des appels systèmes.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Et même si l'application est lancée dans une console, il y a également un autre problème : les entrées sur une console sont généralement bufferisées. Les caractères frappés ne seront traités qu'après un appui sur la touche 'Entrée'.
Bref le stdin n'est pas vraiment une solution viable a ce problème.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
En java pur on ne peut pas.Comment ?Tu dois passer par des appels systèmes.
Il faut utilser JNI pour exectuter du code natif en Java. et donc faire appel a du code compilé dans un autre langage comme le C++ qui fera peut appeler directement l'API de ton OS. Le problème étant qu'il faut reprogrammer ça pour chaque OS.
Partager