„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ein DocumentFilter die JTextField-Eingabe effektiv auf Ganzzahlen beschränken?

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

Veröffentlicht am 01.01.2025
Durchsuche:764

How Can a DocumentFilter Effectively Restrict JTextField Input to Integers?

Filtern von JTextField-Eingaben in Ganzzahlen: 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 using 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 Validierung Anforderungen.
  • Saubererer Code: Zentralisiert die Validierungslogik und reduziert die Codekomplexität.

Schlussfolgerung

Durch die Verwendung eines DocumentFilters können Sie effektiv einschränken JTextField-Eingabe in Ganzzahlen, um sicherzustellen, 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.

Neuestes Tutorial Mehr>

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