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
Version imprimable
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
En pur Java ce n'est pas possible.
:( 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:
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:
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.
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.
En java pur on ne peut pas.Citation:
Comment ?Citation:
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.