Bonjour,
Je souhaite que l'on puisse entrer uniquement des lettres dans un JTextField ou plutôt dans un JFormatTextFiead.
J'ai donc créé la classe suivante mais ça ne fonctionne pas, même après avoir appelé la méthode verify.
Quelqu'un saurait-il m'expliquer ce qui ne va pas ?
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 import javax.swing.*; public class TextOnlyVerifier extends InputVerifier { private String oldValidValue = new String(""); @Override public boolean verify(JComponent input) { JFormattedTextField jftCheckText = null; if (input instanceof JFormattedTextField) { jftCheckText = (JFormattedTextField) input; String text = jftCheckText.getText(); for (int i = text.length() - 1; i >= 0; i--) { if ( ! Character.isLetter(text.charAt(i))) { jftCheckText.setText(oldValidValue); System.out.println("valeur : "+text + " invalide"); return false; } } oldValidValue = text; System.out.println("Valeur : "+text +"valide"); return ((JFormattedTextField) input).isEditValid(); } else { System.err.println("La vérification n'a pas fonctionner Le compesant n'est pas un JFormatTextFild : "+input.getName()); return false; } //} @Override public boolean shouldYieldFocus(JComponent input) { return verify(input); } }
J'ai prévu que mon code soit exécuté quand l'utilisateur sort de la zone de texte mais apparement ce n'est pas le cas.
Je fais cela dans le but de bloquer les touches qui ne sont pas des lettres.
Pourquoi cela ne marche pas ?
Est-ce qu'avec la classe Document, vous pensez que j'aurais plus de chance ?
Merci d'avance pour votre aide.
Salutations
Partager