Beschränkung der JTextField-Eingabe auf Ganzzahlen
Die Aufgabe, die JTextField-Eingabe so zu beschränken, dass nur positive Ganzzahlen akzeptiert werden, ist eine häufig auftretende Notwendigkeit, diese Einschränkung jedoch umzusetzen kann Herausforderungen mit sich bringen. Die Verwendung eines KeyListeners für diesen Zweck, wie ursprünglich versucht, hat mehrere Nachteile.
Nachteile der Verwendung eines KeyListeners:
Die Lösung: DocumentFilter
Ein besserer Ansatz ist die Verwendung eines DocumentFilters. Mit dieser Swing-Komponente können Sie den Inhalt einer Textkomponente filtern und so präzise steuern, was eingegeben werden kann.
Wie es funktioniert:
Ein DocumentFilter ermöglicht Ihnen dies Überprüfen Sie alle eingehenden Änderungen am Inhalt der Textkomponente. Indem Sie überprüfen, ob die geänderte Zeichenfolge eine gültige Ganzzahl darstellt, können Sie die Änderung entweder akzeptieren oder ablehnen.
Beispielimplementierung:
Der folgende Codeausschnitt zeigt, wie a implementiert wird DocumentFilter, der die Eingabe auf Ganzzahlen beschränkt:
import javax.swing.text.DocumentFilter; import javax.swing.text.BadLocationException; public 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 { // Handle invalid input, e.g., display an error message } } private boolean test(String text) { try { Integer.parseInt(text); return true; } catch (NumberFormatException e) { return false; } } }
Indem Sie diesen DocumentFilter an Ihr JTextField anhängen, können Sie sicherstellen, dass nur gültige Zahlen vorliegen Als Eingabe sind ganze Zahlen zulässig.
Das obige ist der detaillierte Inhalt vonWie kann ich ein JTextField so einschränken, dass es nur positive ganze Zahlen akzeptiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!