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);
In diesem Beispiel:
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);
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:
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() + "]"); } });
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!