Heim > Java > javaLernprogramm > Wie kann ich ein JTextField so einschränken, dass es in Java nur numerische Eingaben akzeptiert?

Wie kann ich ein JTextField so einschränken, dass es in Java nur numerische Eingaben akzeptiert?

Linda Hamilton
Freigeben: 2024-12-22 19:05:16
Original
787 Leute haben es durchsucht

How Can I Restrict a JTextField to Accept Only Numeric Input in Java?

Nur ​​numerische Werte in einem JTextField akzeptieren

Es ist möglich, ein JTextField so zu beschränken, dass nur numerische Werte akzeptiert werden, indem die Klasse JFormattedTextField verwendet wird. Diese Klasse unterstützt die Validierung verschiedener Datentypen mit Formatobjekten.

Verwendung von JFormattedTextField für die numerische Eingabe

Das JFormattedTextField bietet eine flexible Lösung zur Validierung von Daten und zur Bereitstellung von visuellem Feedback. So verwenden Sie es für die numerische Eingabe:

NumberFormat integerNumberInstance = NumberFormat.getIntegerInstance();
ImprovedFormattedTextField integerFormattedTextField = new ImprovedFormattedTextField(integerNumberInstance, 100);
Nach dem Login kopieren

In diesem Beispiel:

  • integerNumberInstance ist ein NumberFormat-Objekt speziell für Ganzzahlen.
  • ImprovedFormattedTextField ist ein benutzerdefiniertes JTextField, das JFormattedTextField erweitert und erweiterte Funktionen bietet Funktionen.

Benutzerdefinierter Formatierer für vollständiges Parsen

Um sicherzustellen, dass nur vollständige numerische Werte akzeptiert werden, können wir die ParseAllFormat-Klasse als Dekorator für das Format verwenden Objekt:

final Format format = new ParseAllFormat(integerNumberInstance);
Nach dem Login kopieren

Dieses Wrapper-Format stellt sicher, dass bei Eingabe eines partiellen numerischen Werts der Wert lautet abgelehnt.

Zusätzliche Funktionen von ImprovedFormattedTextField

Die ImprovedFormattedTextField-Klasse bietet mehrere zusätzliche Funktionen:

  • Visuelles Feedback: Bietet Änderungen der Hintergrund- und Vordergrundfarbe, um gültig und ungültig anzuzeigen Eingabe.
  • Caret-Position: Korrigiert die Caret-Position, nachdem ein Wert eingegeben wurde, um die Benutzererfahrung aufrechtzuerhalten.
  • Tastenbindungsüberschreibung: Verhindert unnötige Aktionen , wie z. B. das Aufbrauchen von ENTER-Tastenanschlägen.

Beispiel Verwendung

Um die numerische Eingabefunktionalität in eine GUI zu integrieren:

JPanel panel = new JPanel(new BorderLayout());
panel.add(integerFormattedTextField, BorderLayout.WEST);

JButton button = new JButton(new AbstractAction() {
    {
        integerFormattedTextField.addPropertyChangeListener("editValid", event -> setEnabled((Boolean) event.getNewValue()));
        putValue(Action.NAME, "Show Current Value");
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null, "The current value is [" + integerFormattedTextField.getValue() + "]");
    }
});
Nach dem Login kopieren

Dieses Setup initialisiert ein numerisches Textfeld mit dem verbesserten Verhalten. Die Schaltfläche zeigt den Wert an und ist nur aktiviert, wenn die Eingabe gültig ist.

Das obige ist der detaillierte Inhalt vonWie kann ich ein JTextField so einschränken, dass es in Java nur numerische Eingaben akzeptiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage