2010-09-08 6 views
0

Existe-t-il un moyen de valider du texte dans un JTextField pendant que vous tapez, en fonction de ce que vous avez déjà tapé dans ce champ? Dois-je créer un keyEventListener de quelque sorte, ou existe-t-il un moyen de surcharger la méthode insertString pour le laisser faire cela. Je préfère ce dernier, mais il vous donne seulement le contrôle sur le dernier caractère qui a été tapé, pas toute la chaîne de texte déjà présente dans le champ de texte. Je veux qu'il bipe dès que l'on essaie d'entrer plus d'un point décimal, et ne pas ajouter ce deuxième point décimal au champ de texte.Validation d'entrée basée sur le contenu entier de JTextField, pas seulement sur le dernier caractère tapé

Merci pour votre aide, Erik

+0

Beaucoup de réponses sur ce site: http://google.com/search?q=+documentfilter+site:stackoverflow.com –

Répondre

0

Quel est le problème avec l'ajout d'un auditeur? C'est ce qu'ils sont là pour ça.

Vous pouvez également jeter un coup d'œil à JFormattedTextField.

+0

Ce n'est pas que je suis contre les auditeurs, mais la méthode insertString semblait très pratique pour détecter tout mauvaise entrée. Si j'utilise un écouteur comme documentListener, ne place-t-il pas d'abord le texte dans textField, puis détecte-t-il qu'il y a de mauvaises choses et reformate le texte et émet un bip? C'est comme une étape supplémentaire, mais ça pourrait être moi. – FinalArt2005

+0

Très probablement, oui. Peut-être que JFormattedTextField gère cela différemment. Une autre possibilité consiste à ne pas supprimer le deuxième point décimal mais à dessiner une bordure rouge autour du champ de texte, écrire un message ou désactiver le bouton OK (ou équivalent) tant que l'entrée n'est pas valide. Je trouve cela déroutant si rien ne se passe. Cela pourrait signifier que je n'ai pas assez poussé la touche sur le clavier ou quelque chose comme ça. – musiKk

+0

Vous avez raison, je suppose. Même si je fais un bip, on n'entend peut-être pas ça, alors c'est quelque chose que je peux penser. J'ai regardé le JFormattedTextField et il semble faire exactement ce que vous décrivez: vérifier et éventuellement avec un peu de code en gardant l'accent sur ce champ. Je suis toujours curieux cependant s'il n'y a pas moyen de valider basé sur plus que juste le dernier caractère avant que les choses soient montrées dans le textField, mais je suppose qu'un auditeur est assez rapide pour la contribution simple d'utilisateur. Merci pour l'aide! – FinalArt2005

Questions connexes