Question

J'ai un champ de texte lié à la variable Integer. Ainsi, lorsque l'utilisateur entre un nombre dans ce champ, le mécanisme de reliure convertit automatiquement le texte en Integer et définit cette valeur en var. Le problème est que, puisque l'utilisateur tape du texte dans un champ de texte, ce mécanisme de liaison ne convertit que des valeurs, et si l'utilisateur y entre des lettres, la liaison ne s'activerait pas car il n'y avait pas de valeur légale à l'intérieur du champ de texte. Ce dont j'aurais besoin dans une telle situation, la liaison doit déclencher une modification avec une valeur null. J'ai donc la valeur null dans mon entier Integer.

Donc, si l’utilisateur laissait ce champ vide ou quelque chose qui n’était pas un numéro, la liaison devrait déclencher la propagation de la valeur NULL; ne pas ignorer l'événement ... Comment pourrais-je faire cela sans les événements de propgramming sur un champ de texte?

La liaison java est-elle capable de changer son comportement par défaut?

Était-ce utile?

La solution

Outre la modification du comportement du mécanisme de liaison, vous pouvez placer un formateur dans le champ TextField qui accepte uniquement les nombres. Vous devez étendre javax.swing.text.DefaultFormatter pour cela. Et vous utiliseriez alors un JFormattedTextField au lieu d’un JTextField normal.

Le résultat serait que vous n'obtenez que des entrées valides dans votre champ de texte et que vous ne devez rien extraire de valeurs incorrectes.

Autres conseils

Ce dont vous avez besoin est JFormattedTextField et NumberFormat .

La prise en charge par Swing de la saisie de texte contrainte est déplorable. JFormattedTextField vous donnera une expérience utilisateur totalement misérable. Comme pour le travail Swing le plus intéressant, ignorez le JComponent et choisissez le modèle. Dans ce cas, Document , en particulier DocumentFilter .

En l'occurrence, j'ai une application Swing simple qui utilise des champs de texte contraints à des entiers que j'ai préparés précédemment. Description. Source (voir en particulier createNumberDocument ).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top