restreindre l'entrée de l'utilisateur à des entiers positifs dans un contrôle JTextField a été un problème courant dans la programmation. Bien que vous ayez tenté d'utiliser un KeyListener à cet effet, il existe une approche plus efficace. critères.
Il permet une validation supplémentaire au-delà des vérifications de plage numérique, telles que la validation du type de données (par exemple, en garantissant que les données saisies peuvent être analysées comme un entier) et la longueur des données (par exemple, appliquant un nombre maximum de chiffres).
jTextField TextField = new JTextField (); PlainDocument Doc = (PlainDocument) TextField.getDocument (); doc.setDocumentFilter (new intDocumentFilter ());
import javax.swing.text.PlainDocument; import javax.swing.text.DocumentFilter; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; class IntDocumentFilter extends PlainDocument { @Override public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { if (string == null || string.isEmpty()) { super.insertString(fb, offset, string, attr); } else { try { Integer.parseInt(string); super.insertString(fb, offset, string, attr); } catch (NumberFormatException e) { // warn the user and don't allow the insert } } } @Override public void replace(FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException { if (text == null || text.isEmpty()) { super.replace(fb, offset, length, text, attrs); } else { try { Integer.parseInt(text); super.replace(fb, offset, length, text, attrs); } catch (NumberFormatException e) { // warn the user and don't allow the insert } } } }Cette implémentation:
JTextField textField = new JTextField(); PlainDocument doc = (PlainDocument) textField.getDocument(); doc.setDocumentFilter(new IntDocumentFilter());
N'oubliez pas que ces techniques garantissent que l'entrée est conforme aux contraintes souhaitées, vous permettant de contrôler le type de données accepté par le jtexfield.
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