Die Verwendung eines Schlüssel-Listeners zur Validierung numerischer Eingaben in einem JTextField ist zwar intuitiv, aber unzureichend. Ein umfassenderer Ansatz besteht stattdessen darin, einen DocumentFilter zu verwenden.
Ein DocumentFilter überwacht Änderungen an einem Dokument und bietet so eine bessere Kontrolle über die Eingabevalidierung. Damit können Sie:
Eine Beispielimplementierung von MyIntFilter mit 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 }
Durch die Verwendung eines DocumentFilters können Sie kann die JTextField-Eingabe effektiv auf Ganzzahlen beschränken und so sicherstellen, dass nur gültige Daten eingegeben werden. Es handelt sich um einen robusten und zuverlässigen Ansatz, der die Einschränkungen wichtiger Zuhörer berücksichtigt.
Das obige ist der detaillierte Inhalt vonWie kann ein DocumentFilter die JTextField-Eingabe effektiv auf Ganzzahlen beschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!