"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 01/01/2025
Parcourir:939

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

Filtrage de l'entrée JTextField vers des 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 ainsi 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 utilisant 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
}

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 divers types de données, formats de nombres et besoins de validation futurs.
  • Nettoyeur Code : centralise la logique de validation, réduisant ainsi la complexité du code.

Conclusion

En utilisant un DocumentFilter, vous pouvez restreindre efficacement la saisie de 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.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3