Comment définir un Masque à un SWT Texte pour autoriser uniquement les Décimales
Ce que je veux, c'est que l'utilisateur peut uniquement de saisie des nombres décimaux sur un Texte, je ne veux pas ça pour permettre la saisie de texte:
- BONJOUR
- ABC.34
- 34.HEY
- 32.3333.123
J'ai essayé à l'aide de VerifyListener, mais il ne me donne la partie du texte qui l'a inséré, de sorte que je finis par avoir le texte que je veux insérer et le texte avant de l'insertion, on a aussi essayé en combinant le texte, mais j'ai eu des problèmes lorsque vous supprimez une clé (backspace) et je finis par avoir une Chaîne comme 234[retour arrière]455.
Est-il un moyen de mettre un Masque sur un Texte, ou de combiner avec succès VerifyEvent avec le texte actuel pour obtenir le "nouveau texte" avant de mettre dans le Texte?
Au sujet de votre problème avec le texte intégral, vous pouvez utiliser une ModifyListener.
OriginalL'auteur Josejulio | 2012-08-06
Vous devez vous connecter pour publier un commentaire.
Vous devrez ajouter un
Listener
sur leText
à l'aide deSWT.Verify
. Dans ceListener
vous pouvez vérifier que l'entrée ne contient qu'un nombre décimal.Suivantes ne permettent l'insertion de décimales dans le champ de texte. Elle permet de vérifier la valeur chaque fois que vous modifiez quelque chose dans le texte et de le rejeter, si ce n'est pas un nombre décimal.
Cela permettra de résoudre votre problème, depuis le
VerifyListener
est exécuté AVANT que le nouveau texte est inséré. Le nouveau texte a pour passer à l'auditeur d'être accepté.Voir mon édité réponse.
Désolé, mon problème n'est pas la validation, mon problème est que je ne trouve pas où le mettre pour la validation, en gros j'ai besoin d'obtenir de la Chaîne qui a ce nouvelle valeur AVANT de ce qui est écrit sur le Texte, j'ai essayé de combiner les deux la oldText et la VerifyEvent du texte, mais j'ai eu des problèmes avec correction arrière et supprime.
Utilisez simplement le code que j'ai fourni ci-dessus dans le
SWT.Verify
Listener
. Vous devriez être en mesure de le comprendre, maintenant, je dois y aller...lors de la frappe, une "expression partielle" comme "4." ou "5e" peut se produire. Ce type d'expression doit être valide pendant la frappe. Toutefois, Il ne peut pas être analysé à une valeur flottante avec Flotteur.parseFloat(expression). Les caractères individuels doivent être vérifiées et uniquement des chiffres et.eE+- doivent être autorisés.
OriginalL'auteur Baz
Avez-vous essayé le FormattedText Widgets à partir de la Nébuleuse? - Ils sont un moyen facile à mettre en œuvre ces types de champs de saisie, voir http://eclipse.org/nebula/widgets/formattedtext/formattedtext.php
Nébuleuse Formattedtext est encore en Alpha... j'ai besoin d'une complète révision / réécriture, principalement dans la DATE et l'HEURE de formateurs (beaucoup trop de code, omg!). Encore buggé, et je souhaite qu'il y avait de meilleures alternatives... SWT suce dans la mise en forme du département.
OriginalL'auteur Tom Seidel
Afin d'obtenir le comportement que je voulais, j'ai dû utiliser plusieurs auditeurs:
Un ModifyListener vérifie si l'erreur la décoration peut être caché lors de la frappe. Il ne montre pas l'erreur de la décoration depuis invalide partiel d'une entrée comme "4e-" est autorisé pour enfin entrer dans "4e-3"
La ModifyListener pourrait être encore amélioré pour vérifier partielle d'entrée qui n'est pas en mesure de lui donner enfin un valide le coût total des intrants, par exemple, "4e-....3". Dans ce cas particulier la ModifyListener devrait activer l'erreur de décoration lors de la frappe.
OriginalL'auteur Stefan
En plus de @Tom Seidel réponse:
Vous pouvez utiliser un
org.eclipse.swt.widgets.Spinner
. Cela permet que de chiffres. Vous pouvez spécifier min et la valeur max et la valeur de retour est uneint
donc pas besoin de jeter unString
.La valeur de la
Spinner
peuvent être récupérées en appelant:OriginalL'auteur Naxos84