J'ai un JTextField pour les utilisateurs qui souhaitent entrer un numéro de série. La forme du numéro de série est telle qu'elle ne contient aucune des lettres I, O ou S, puisqu'elles ressemblent à 1, 0 et 5. Quelle est la bonne façon de faire en sorte que si l'utilisateur tape l'une de ces lettres, il entre le nombre à la place?
par exemple. L'utilisateur tape AaOo0
et il entre dans le JTextField en tant que Aa000
Pour clarifier cela, cela devrait arriver lorsque l'utilisateur tape chaque caractère, pas après avoir fini de taper et avoir quitté le champ de texte.Remplacer les lettres par des nombres en tant que types d'utilisateur dans un JTextField
3
A
Répondre
4
Utilisez un DocumentFilter.
Quelque chose comme:
AbstractDocument doc = (AbstractDocument)jtextField.getDocument();
doc.setDocumentFilter(yourImplementationOfDocumentFilterWhichChangeOto0OnInsertAndReplace);
L'homme, qui est beaucoup mieux que mon crummy ol solution d'écoute! +1 – javamonkey79
Intéressant, je n'ai jamais connu cette solution. J'avais seulement vu des solutions où vous créez une sous-classe de AbstractDocument pour faire le filtrage. Votre approche est de loin supérieure (exprime l'intention plus clairement) – I82Much