Maison > Java > javaDidacticiel > Comment un DocumentFilter peut-il restreindre efficacement l'entrée JTextField aux entiers ?

Comment un DocumentFilter peut-il restreindre efficacement l'entrée JTextField aux entiers ?

Susan Sarandon
Libérer: 2024-12-08 10:39:12
original
752 Les gens l'ont consulté

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

Filtrage de l'entrée JTextField en entiers : une approche efficace avec DocumentFilter

Bien qu'intuitif, l'utilisation d'un écouteur de clé pour valider la saisie numérique dans un JTextField est inadéquate. Au lieu de cela, une approche plus complète consiste à utiliser un DocumentFilter.

DocumentFilter : une solution robuste

Un DocumentFilter surveille les modifications apportées à un document, offrant un meilleur contrôle sur la validation des entrées. Il vous permet de :

  • Intercepter les entrées avant qu'elles ne soient insérées dans le document.
  • Effectuer une logique de validation personnalisée et rejeter les entrées non valides.
  • Gérer divers scénarios d'entrée, y compris couper, copier et coller.

Implémentation avec DocumentFilter

Un exemple d'implémentation de MyIntFilter à l'aide de DocumentFilter :

class MyIntFilter extends DocumentFilter {
    @Override
    public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) 
        throws BadLocationException {

        Document doc = fb.getDocument();
        StringBuilder sb = new StringBuilder();
        sb.append(doc.getText(0, doc.getLength()));
        sb.insert(offset, string);

        if (test(sb.toString())) {
            super.insertString(fb, offset, string, attr);
        } else {
            // warn the user and don't allow the insert
        }
    }

    private boolean test(String text) {
        try {
            Integer.parseInt(text);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

    ... // Other overridden methods for replace and remove
}
Copier après la connexion

Avantages de DocumentFilter

  • Validation complète : garantit que toutes les entrées, quelle que soit la méthode de saisie, répondent aux critères de validation.
  • Polyvalent : prend en charge différents types de données, formats de nombres, et les besoins de validation futurs.
  • Cleaner Code : centralise la logique de validation, réduisant ainsi la complexité du code.

Conclusion

En utilisant un DocumentFilter, vous peut effectivement restreindre l'entrée JTextField aux entiers, garantissant que seules les données valides sont saisies. Il s'agit d'une approche robuste et fiable qui répond aux limites des auditeurs clés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal