Benutzereingabe auf Zahlen überprüfen

Lautsprecher

Erfahrenes Mitglied
Hi,
in meiner Anwendung gibt der Benutzer seinen Nachnamen und seine Personalnummer ein.

Zum einem möchte ich gleich am anfangen folgende Punkte abfangen:
1. Bei Nachnamen sollen keine Zahlen drinnen stehen
2. Bei Personalnummern sollen keine Buchstaben eingegeben werden.

In VisualBasic gibts da den schönen Befehl IsNumeric! In Java habe ich ihn bisher aber nicht gefunden! Gibt es eine ähnliche Methode?

Grüße
 
Für dein 2. Problem hätte ich auf die schnelle folgende Lösung.

Code:
try {
    Integer.parseInt(textField.getText());
}
catch (NumberFormatException nfe) {
    System.out.println("Sie haben keinen numerischen Wert eingegeben!");
}

Gruß

Romsl
 
es geht auch per inputverifier....das beispiel wurde mal irgendwann hier gepostet find nur grad den link nich

Code:
JTextField input = new JTextField();
input.setInputVerifier(new InputVerifier() {
		 public boolean verify(JComponent input) {
			 JTextComponent jtc = (JTextComponent) input;
			 String text = jtc.getText();
			 //Nur Zahlen eingaben zulassen
			 return text.matches("\\d*");
			 /* Alternativ für nur Buchstaben
			 return text.matches("\\D*"); */
		 }
});

funktioniert natürlich nur bei Swing oder eventuell AWT !
 
Zuletzt bearbeitet:
Moin,
eine JTextComponent Instanz gibt es nicht, weil die Klasse abstract ist. Für alle Swing Componenten genügt ein
import javax.swing.*;
 
Code:
import javax.swing.text.JTextComponent;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;

das sind meine imports....
 
Guten Tag,

ich hab' das mit dem InputVerifier getestet, aber es funktioniert leider nicht :eek:. Ich kann im jTextField1 immer noch munter Buchstaben eintippen :(.

Optionen ist mein Dialog, in der initComponents werden alle Elemente erzeugt, jTextField1 ist ein TextField ;)

(Die für diesen Teil irrelevanten Code-Teile hab' ich mal entfernt, ich weiß, dass das nicht alles ist ;))

Code:
import javax.swing.InputVerifier; // für die Überprüfung ob nur Zahlen bzw. Buchstaben eingegeben wurden
import javax.swing.JComponent; // siehe InputVerifier
import javax.swing.text.JTextComponent; // sieht InputVerifier

// [...]

public class Optionen extends javax.swing.JDialog /* (¯`•.  By Christoph Ernst  .•´¯) */{
    
    int keyCode; // Taste, die für P2Talk verwendet wird
    String password; // Proxy-Passwort, für Verschlüsselungszwecke global
    String filename = "settings.ini"; // Dateiname der Settings-Datei
    
    /** Creates new form Optionen */
    public Optionen(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        jTextField1.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent jTextField1) {
                JTextComponent jtc = (JTextComponent) jTextField1;
                String text = jtc.getText();
                //Nur Zahlen eingaben zulassen
                return text.matches("\\d*");
                         /* Alternativ für nur Buchstaben
                         return text.matches("\\D*"); */
            }
        });
        LoadSettings(); // Initialisierung der Komponenten mit Standardwerten.
    }
// [..]
}
 
Hi,
es gibt ein Verständnisproblem.
Das Document prüft während der Eingabe.
Der InputVerifier prüft beim Verlassen des Feldes (Fokus), also quasi nach der Eingabe.
 
Zurück