Bonjour,
J'ai défini un controle de type "JTextFIeld" et j'ai un problème uniquement sous Mac OS/X.

Lorsque je tape la lettre A, et que je garde le doigt appuyé pour choisir un A accentué, j'obtiens bien une fenêtre qui me permet de choisir la lettre désirée, mais dès que mon choix est fait, cette fenêtre disparait mais je suis dans l'impossibilité de taper quoi que ce soit dans ma zone de texte. Je ne peux même pas effacer ce que je viens de taper. La zone de texte est complètement bloquée. Dois-je coder quelque chose de spécial pour résoudre ce problème ?
Même sous Eclipse cela arrive.

PS : Évidemment je n'ai pas ce souci sous Windows, puisque cette possibilité n'existe pas.

Ci_dessous un programme test.

Merci d'avance pour tout conseil.

Gégé

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
 
	package test;
 
	import javax.swing.JFrame;
	import javax.swing.JPanel;
	import javax.swing.JTextField;
 
	import java.awt.event.KeyAdapter;
	import java.awt.event.KeyEvent;
 
	public class TestField extends JFrame 
	{
		private static final long serialVersionUID = 1L;
		private JTextField textField;
 
		public TestField()  
		{
			getContentPane().setLayout(null);
			setSize(344,288);
			JPanel panel = new JPanel();
			panel.setBounds(25, 25, 270, 167);
			getContentPane().add(panel);
			panel.setLayout(null);
 
			textField = new JTextField();
			textField.addKeyListener(new KeyAdapter() 
			{
				@Override
				public void keyReleased(KeyEvent key) 
				{
					String x=KeyEvent.getKeyText(key.getKeyCode());   // on récupère la valeur tapée
					if(x==null || x.equals("") || x.length()<3) return; 
					if (x.substring(0,3).equals("Ent"))  
	                               System.out.println("La clé pressée est : " + x);
				}
				public void keyTyped(KeyEvent key) 
				{
			                System.out.println("Typed " );  // juste pour voir
				}
				public void keyPressed(KeyEvent key) 
				{
	                              System.out.println("Pressed" ); // juste pour voir
				}
			});
			textField.setBounds(82, 61, 149, 20);
			panel.add(textField);
			textField.setColumns(10);
			this.setLocationRelativeTo(null);
			setVisible(true);
		}
 
 
		public static void main(String[] args) 
		{
			 new TestField();
 
		}
}