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.
Un DocumentFilter surveille les modifications apportées à un document, offrant un meilleur contrôle sur la validation des entrées. Il vous permet de :
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 }
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!