Salut !


J'ai un problème bizarroïde avec un evènement sur un JTextField.
Lorsque je saisis un caractère dans le JTextField, il s'affiche en double... et je vois absolument pas pourquoi !

Si vous pouviez m'aider !

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
60
61
62
63
64
 
public class Form2 extends JFrame {
 
	private JTextField jTextField1 = null;	
	private StringBuffer jtf=null;
	private int posjtf=0;
 
.....
 
	private JTextField getJTextField1() {
		jtf=new StringBuffer(50);
		if (jTextField1 == null) {
			jTextField1 = new JTextField();
			jTextField1.setBounds(new Rectangle(15, 65, 175, 20));
			jTextField1.addKeyListener(new KeyAdapter() {
				public void keyPressed(KeyEvent e) {
					int code = e.getKeyCode ();
					if (code== KeyEvent.VK_BACK_SPACE){
						if (posjtf>0) {
							jtf.deleteCharAt(posjtf-1);
							posjtf--;
							}
						jTextField1.setText(jtf.toString().trim());
						jTextField1.setCaretPosition(posjtf);
//						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
						e.consume();
					}
					else if (code== KeyEvent.VK_DELETE){
						if (posjtf<jtf.length()) jtf.deleteCharAt(posjtf);
						jTextField1.setText(jtf.toString().trim());
//						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
						e.consume();
					}
					else if (code== KeyEvent.VK_LEFT || code== KeyEvent.VK_KP_LEFT){
						if (posjtf>0) posjtf--;
						jTextField1.setCaretPosition(posjtf);
						e.consume();
						}
					else if (code== KeyEvent.VK_RIGHT || code== KeyEvent.VK_KP_RIGHT){
						if (posjtf<jtf.length())posjtf++;
						jTextField1.setCaretPosition(posjtf);
						e.consume();
						}
					else if (e.getKeyChar() != KeyEvent.CHAR_UNDEFINED && code != KeyEvent.VK_ENTER){
						jtf.insert(posjtf, e.getKeyChar());
						e.consume();
						posjtf=jtf.length();
//						System.out.println(jtf.toString()+" "+jtf.length()+" "+posjtf);
						jTextField1.setText(jtf.toString());
						jTextField1.setCaretPosition(posjtf);
						int i=jList1.getNextMatch(jtf.toString().trim(), 0, Position.Bias.Forward);
						System.out.println(i);
						if (i!=-1) {
							jList1.setSelectedIndex(i);
							jList1.ensureIndexIsVisible(i);
						}
						else jList1.setSelectedIndex(-1);						
					}
				}
			});
		}
		return jTextField1;
	}
}

Merci !