die Eingabe von Benutzern auf positive ganze ganze Zahlen in einem jTextField -Steuerelement war ein häufiges Problem in der Programmierung. Während Sie zu diesem Zweck versucht haben, einen KeyListener zu verwenden, gibt es einen effektiveren Ansatz.
implementieren einen Dokumentfilter, anstatt sich auf einen KeyListener zu verlassen, bietet mehrere Vorteile:
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 } } } }Diese Implementierung:
JTextField textField = new JTextField(); PlainDocument doc = (PlainDocument) textField.getDocument(); doc.setDocumentFilter(new IntDocumentFilter());
Denken Sie daran, dass diese Techniken sicherstellen, dass die Eingabe den gewünschten Einschränkungen entspricht, sodass Sie die vom JTextField akzeptierte Datenstyp steuern können.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3