Bonjour,

J'aimerai que lorsque le contenu d'un champs texte se sélectionne lors de la prise de focus de ce dernier.
Pour cela, je pensais utiliser un FocusListener dans lequel j'appellerai la méthode "selectAll()". Malheureusement, ça ne marche que la première fois... Après pas moyen de lui faire sélectionner quoique ce soit

Voici le code complet de ma classe :

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
 
public class ChangePaletteLimitsDialog extends MyDialog {
 private boolean isOK = false;
 private float minValue, maxValue;
 private MyButton bOK, bCancel;
 private MyFormattedTextField txtMin, txtMax;
 
 
 public ChangePaletteLimitsDialog(JFrame parent, float minValue, float maxValue){
  super(parent, "Modification des limites", true);
  setResizable(false);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  getContentPane().setLayout(new GridBagLayout());
 
  /** Constantes */
  Insets leftComponentInsets = new Insets(15,30,0,5);
  Insets rightComponentInsets = new Insets(15,5,0,30);
  Insets buttonsInsets = new Insets(8,5,8,5);
  int txtWidth = 60;
  int txtHeight = 22;
  DecimalFormat format = Texts.formatFactory("###0.###");
 
 
  /** Création des composants */
  MyLabel labelMin = new MyLabel("Valeur minimale :");  
 
  txtMin = new MyFormattedTextField(format);
  txtMin.setHorizontalAlignment(JTextField.RIGHT);
  txtMin.setAlignmentX(JTextField.RIGHT_ALIGNMENT);
  txtMin.setSizes(txtWidth, txtHeight);
  txtMin.setText(""+minValue);
  txtMin.addKeyListener(new KeyAdapter() {
   public void keyPressed(KeyEvent ke) {
    keyPressed_actionPerformed(ke);
   }
  });
  txtMin.addFocusListener(new FocusAdapter() {
   public void focusGained(FocusEvent arg0) {
    txtMin.selectAll();
   }
  });
//  txtMin.addActionListener(new ActionListener() {
//   public void actionPerformed(ActionEvent arg0) {
//    txtMin.selectAll();
//   }
//  });
 
  MyLabel labelMax = new MyLabel("Valeur maximale :");
 
  txtMax = new MyFormattedTextField(format);
  txtMax.setHorizontalAlignment(JTextField.RIGHT);
  txtMax.setAlignmentX(JTextField.RIGHT_ALIGNMENT);
  txtMax.setSizes(txtWidth, txtHeight);
  txtMax.setText(""+maxValue);
  txtMax.addKeyListener(new KeyAdapter() {
   public void keyPressed(KeyEvent ke) {
    keyPressed_actionPerformed(ke);
   }
  });
  txtMax.addFocusListener(new FocusAdapter() {
   public void focusGained(FocusEvent arg0) {
    txtMax.selectAll();
   }
  });
//  txtMax.addActionListener(new ActionListener() {
//   public void actionPerformed(ActionEvent arg0) {
//    txtMax.selectAll();
//   }
//  });
 
  MyPanel panel = new MyPanel();
 
  bOK = new MyButton("OK");
  bOK.setSizes(60,25);
  bOK.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae) {
    bOK_actionPerformed();
   }
 
  });
  bCancel = new MyButton("Annuler");
  bCancel.setSizes(60,25);
  bCancel.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae) {
    bCancel_actionPerformed();
   }
  });
 
 
  /** Contraintes */
  GridBagConstraints constraints = new GridBagConstraints();
  constraints.anchor = GridBagConstraints.CENTER;
 
 
  /** Agencement des composants */
  constraints.gridx = 1;
  constraints.gridy = 0;
  constraints.gridwidth = 2;
  constraints.insets = leftComponentInsets;
  getContentPane().add(labelMin, constraints);
  constraints.gridx = 3;
  constraints.insets = rightComponentInsets;
  getContentPane().add(txtMin, constraints);
  constraints.gridx = 1;
  constraints.gridy = 1;
  constraints.insets = leftComponentInsets;
  getContentPane().add(labelMax, constraints);
  constraints.gridx = 3;
  constraints.insets = rightComponentInsets;
  getContentPane().add(txtMax, constraints);
  constraints.gridx = 0;
  constraints.gridy = 0;
  constraints.gridwidth = 1;
  constraints.insets = buttonsInsets;
  panel.add(bOK, constraints);
  constraints.gridx = 1;
  panel.setLayout(new GridBagLayout());
  panel.add(bCancel, constraints);
  constraints.gridx = 0;
  constraints.gridy = 3;
  constraints.gridwidth = 6;
  constraints.anchor = GridBagConstraints.CENTER;
  getContentPane().add(panel, constraints);
 
 
  this.pack();
  setLocationRelativeTo(parent);
  txtMin.requestFocus();
//  bOK.requestFocus();
//  getRootPane().setDefaultButton(bOK);
  setVisible(true);
 }
 
 /**
  * @return
  */
 public boolean isOK() {
  return isOK;
 }
 public void bOK_actionPerformed(){
  isOK=true;
  minValue = new Float(txtMin.getText()).floatValue();
  maxValue = new Float(txtMax.getText()).floatValue();
  dispose(); //st11870 : à faire en dehors ou là?
 }
 public void bCancel_actionPerformed(){
  escapeActionPerformed();
 }
 private void keyPressed_actionPerformed(KeyEvent ke) {
  if (ke.getKeyChar() == KeyEvent.VK_ESCAPE) {
   escapeActionPerformed();
  }
  else if (ke.getKeyChar() == KeyEvent.VK_ENTER) {
   bOK_actionPerformed();
  }
 }
 
 protected void escapeActionPerformed() {
  isOK=false;
  dispose();
 }
 public float getMaxValue() {
  return maxValue;
 }
 public float getMinValue() {
  return minValue;
 }
}
Si quelqu'un remarque quelque chose d'abhérant ou tout simplement la source de mon problème...
Merci d'avance!