IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

tester si la valeur d'un textField est un float.


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut tester si la valeur d'un textField est un float.
    Bonjour,
    Je crois que le titre veut tout dire. Je veux savoir si la valeur d'un textField est un float ou non, je fais le test lorsque ce textfield perd le focus. Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    jText.addFocusListener(
    		          new FocusListener() {
    		             public void focusGained(FocusEvent e) {};
    		             public void focusLost(FocusEvent e) {
     
    		                 String content = jText.getText();
     
    		                 System.out.println(content);
    		             }
     
     
    		      });
    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu peux construire un javax.swing.text.PlainDocument en surchargeant la méthode "insertString". Tu peux placer tous les tests que tu veux, notemment vérifier l'existence d'une seule virgule maximum, et vérifier si tous les caractères sont des chiffres.
    Ensuite, tu donnes une instance de ton PlainDocument à ton JTextField via "setDocument".

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    Merci pour ta réponse, je vais essayer de voir du coté des PlainDocument avec les jtextfield. Mais s'il y a d'autres proposition, c'est toujours la bienvenue.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Essaie également de voir avec les NumberFormatter .

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 282
    Points : 327
    Points
    327
    Par défaut
    Salut, j'ai deux autres proposition à te faire :
    1-JFormattedTextField >> empêche de rentrer autre chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JFormattedTextField ftf = new JFormattedTextField(NumberFormat.getNumberInstance());
    // Il est également possible de se faire son propre Format[teur]
    2-Try/Catch & parseFloat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    JTextField myTF = new JTextField();
          try {
            float myFloat = Float.parseFloat(myTF.getText());
            // Ici traitement si c'est un float
            // ...
          } catch (NumberFormatException ex) {
            // Ici traitement si ce n'est pas un float
          }
    Bon code

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    Merci pour vos réponse. Moi aussi j'ai trouvé la deuxiéme solution et je crois qu'elle est plus intelligente. Maintenant le probléme ,c'est que je veux associer l'affichage d'un message (JOption..) lorsque le text perd le focus. le probléme c'est que mon JOption apprait toujours, meme lorsque je ferme ma fenetre. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    jText.addFocusListener(
    		          new FocusListener() {
    		             public void focusGained(FocusEvent e) {};
    		             public void focusLost(FocusEvent e) { 
    		                 String content = jText.getText();
    		                 if(isValid(content)){//Retourne vrai si c'est un float
    		                	//J'enregistre ici
    		                 }
    		                 else{
    		                	 jText.requestFocus();
                                                        JOptionPane.showMessageDialog(this, 
           	         "Float number is expected",
           	         "Warning",
           	         JOptionPane.WARNING_MESSAGE);
    		                 }
    		                 System.out.println(content);
    		             }
    		      });

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Gérer les données du JTextField sur la perte de focus n'est pas logique. Le traitement doit se faire en amont, avant la modification du champs. La preuve : tu es obligé de faire des acrobaties pour certains cas d'utilisation : lorsque la fenêtre est fermée, ou lorsque une autre fenêtre d'un autre logiciel est activée.
    bon courage

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 98
    Points : 54
    Points
    54
    Par défaut
    Re,
    Je crois que j'ai trouvé une solution finalement: Voici le code si ça peut servir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    jText.setInputVerifier(new FloatVerifier());
     
    class FloatVerifier extends InputVerifier {
            public boolean verify(JComponent input) {
    	       JTextField tf = (JTextField) input;
    	       String content = tf.getText();
    	       return isValid(content);
            }
        }
     
    public boolean isValid(String s){
    		try{
    		float flo = new Float(s);
    		return true;
    		}
    		catch(NumberFormatException n){
     
    			JOptionPane.showMessageDialog(this, 
           	         "Float number is expected",
           	         "Warning",
           	         JOptionPane.WARNING_MESSAGE);
    			return false;
    		}
    	}
    Et Merci encore à vous tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment tester si une valeur de type entier est nulle ?
    Par kikidrome dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/07/2009, 00h53
  2. Réponses: 9
    Dernier message: 16/11/2006, 14h08
  3. Réponses: 18
    Dernier message: 15/11/2005, 10h13
  4. Réponses: 3
    Dernier message: 07/10/2005, 09h34
  5. [XSL] Tester si la valeur est un entier dans un xml
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/07/2003, 04h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo