2011-08-01 5 views
4

question rapide: J'ai un JTextField pour l'entrée de l'utilisateur, dans mon écouteur de focus, quand le JTextField perd le focus, comment puis-je vérifier que les données dans le JTextField sont un nombre? grâceVérifiez qu'un JTextField est un nombre

Répondre

7

Essayez d'effectuer Integer.parseInt(yourString) et si elle jette un NumberFormatException vous saurez la chaîne n'est pas valide integer

try { 
    Integer.parseInt(myString); 
    System.out.println("An integer"): 
} 
catch (NumberFormatException e) { 
    //Not an integer 
} 

Une autre alternative est Regex:

boolean isInteger = Pattern.matches("^\d*$", myString); 
+0

Oups, destiné à modifier le mien pas le vôtre, déjà annulé, désolé! = | – maerics

+0

@Maerics pas de problème. –

+0

Vous avez échappé un point-virgule ici: 'System.out.println (" Un nombre entier ");' –

1
public void focusLost(FocusEvent fe) { 
    String text = this.getText(); 
    try { 
    double d = Double.parseDouble(text); 
    // or Integer.parseInt(text), etc. 
    // OK, valid number. 
    } catch (NumberFormatException nfe) { 
    // Not a number. 
    } 
} 
2

Voir How to Use Formatted Text Fields. Si vous ne souhaitez pas utiliser un champ de texte formaté, vous devez utiliser un InputVerifier et non un FocusListener.

Vous pouvez également utiliser un DocumentFilter pour filtrer le texte au cours de la saisie.

+0

c'est correct et le droit chemin +1 – mKorbel

Questions connexes