[JFrame] [Win/Linux] Comportement keyPressed/keyReleased
Bonsoir,
Suite à un test avec le code suivant:
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
|
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());
}
} |
je tombe sur un différence de comportement entre Windows (98) et Linux (RH9).
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).