Bonsoir,

Suite à un test avec le code suivant:

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());
	}
}
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).