Heim >Java >javaLernprogramm >Wie kann ein DocumentFilter die JTextField-Eingabe effektiv auf Ganzzahlen beschränken?

Wie kann ein DocumentFilter die JTextField-Eingabe effektiv auf Ganzzahlen beschränken?

Susan Sarandon
Susan SarandonOriginal
2024-12-08 10:39:12769Durchsuche

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

JTextField-Eingabe in Ganzzahlen filtern: Ein effektiver Ansatz mit DocumentFilter

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.

DocumentFilter: Eine robuste Lösung

Ein DocumentFilter überwacht Änderungen an einem Dokument und bietet so eine bessere Kontrolle über die Eingabevalidierung. Damit können Sie:

  • Eingaben abfangen, bevor sie in das Dokument eingefügt werden.
  • Benutzerdefinierte Validierungslogik ausführen und ungültige Eingaben ablehnen.
  • Verschiedene Eingabeszenarien verarbeiten, einschließlich Ausschneiden, Kopieren und Einfügen.

Implementierung mit DocumentFilter

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
}

Vorteile von DocumentFilter

  • Umfassende Validierung: Stellt sicher, dass alle Eingaben, unabhängig von der Eingabemethode, die Validierungskriterien erfüllen.
  • Vielseitig: Unterstützt verschiedene Datentypen, Zahlenformate, und zukünftige Validierungsanforderungen.
  • Saubererer Code: Zentralisiert die Validierungslogik und reduziert die Codekomplexität.

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn