Bonsoir,
Suite à un test avec le code suivant:
je tombe sur un différence de comportement entre Windows (98) et Linux (RH9).
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 import java.awt.Dimension; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; public class TestKeyEvent extends JFrame implements KeyListener { public static void main(String[] args) { new TestKeyEvent(); } public TestKeyEvent() { super(); this.setTitle("Test KeyEvent Linux"); this.setSize(new Dimension(300,200)); this.addKeyListener(this); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public void keyPressed(KeyEvent event) { System.out.println("touche pressee: "+event.getKeyCode()); } public void keyTyped(KeyEvent event) {} public void keyReleased(KeyEvent event) { System.out.println("touche relachee: "+event.getKeyCode()); } }
Lorsque l'on presse une touche, et qu'on la garde enfoncée:
- 1) windows génère un évènement keyPressed, puis toute une série de keyPressed, jusqu'au relâchement de la touche qui génère le keyReleased
2)Linux génère un keyPressed, toute une série de couples keyReleased/keyPressed, puis le keyReleased final.
Le comportement que je souhaiterais conserver est celui de windows.
Y'a-t-il un moyen de faire réagir Linux de la même manière (sans trafiquer l'OS)? J'ai trouvé sur le net une solution qui consisterai à créer mon propre EventQueue pour gérer les couples keyReleased/keyPressed intempestifs, mais y'a-t-il un moyen plus simple? Et je ne peux pas utiliser keyTyped, les touches à gérer sont les touches de fonction clavier (F1 à F12).
Partager