Partage
  • Partager sur Facebook
  • Partager sur Twitter

TextField, formatage

encore moi ....

Sujet résolu
    28 mai 2009 à 14:52:56

    bonjour a tous.
    je voudrai detecter la saisie de caractere ou "," ou "." dans un textField
    (en gros, je ne veux permettre que la saisie d'entier)

    je sais que en swing on peut le faire avec un JFormattedTextField
    mais vue que je doit taffé en AWT, je ne sais pas le faire....

    avez vous une solution a mon probleme????

    merci d'avance pour votre aide ;)
    • Partager sur Facebook
    • Partager sur Twitter
    Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
      28 mai 2009 à 15:17:53

      Euh tu veut dire, lorsque l'on tappe un autre caractère qu'un chiffre dans un JtextField, ça ne l'afficha pas ?
      Te casse pas la tête, utilise un SpinnerNumberModel.
      • Partager sur Facebook
      • Partager sur Twitter
        28 mai 2009 à 15:22:47

        oui et non, en fait, il peut s'afficher, mais, que derriere sur mon traitement, je voudrai pouvoir virée tout ce qui n'ai pas un entier.....

        par exmple:
        si l'utilisateur tape a12 ou 12.5, je puisse voir que ce n'est pas un entier ;)
        • Partager sur Facebook
        • Partager sur Twitter
        Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
          28 mai 2009 à 15:41:11

          Si c'est ça utilise les regex :
          String regex ="[0-9]+";
          Pattern p = Pattern.compile(regex);
          if (!p.matcher(textField.getText ()).matches()) 
             //C'est pas un nombre.
          else
          
            //C'est un nombre
          

          • Partager sur Facebook
          • Partager sur Twitter
            28 mai 2009 à 15:51:04

            nickel, sa marche, merci ;)
            (je connaissait les regex, mais en PHP ;) )
            je vais voir pour bien les utiliser en java ;)


            encore merci ;)
            • Partager sur Facebook
            • Partager sur Twitter
            Le jour où Microsoft fera des choses qui ne plantent pas, ça sera des clous ...
              28 mai 2009 à 17:00:28

              Y'a plus simple : Integer.parseInt, avec un catch au cas où ce serait invalide :

              try {
                  int val = Integer.parseInt(textField.getText());
                  //C'est valide
              } catch (NumberFormatException ex){
                  //C'est invalide
              }
              


              Plusieurs avantages :

              - Tu récupères la valeur sous forme d'int dans la foulée (Si tu veux impérativemnt un int, t'en auras sûrement besoin)
              - Ca tient compte de toutes les façons d'écrire un int (Y-compris la forme hexa)
              - C'est plus standard qu'une regex perso ^^

              Par contre, il faut que tu voies si tu veux gérer les nombres négatifs ou pas. Avec parseInt, si tu veux que des nombres positifs, faudra ajouter un test.

              D'une manière générale, la regex est plutôt spécifique, tandis que le parseInt est standard (Et convertit la chaîne en int dans la foulée). Donc à moins d'avoir un besoin spécifique (Uniquement des entiers positifs écrits sous une forme décimale...), je te conseille le parseInt.
              • Partager sur Facebook
              • Partager sur Twitter
                28 mai 2009 à 18:02:54

                Je plussois le code de veldryn , en plus il est plus rapide, et que demande ton de plus que la rapidité quand on code en java.
                • Partager sur Facebook
                • Partager sur Twitter
                J'ai tous les badges d'OpenClassrooms.
                  28 mai 2009 à 20:45:52

                  Oui ça j'utilise aussi, mais je me demandais si c'était mieux ou pas, maintenant j'ai la réponse. :)
                  C'est donc plus rapide de traiter une Exception que de faire des tests.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mai 2009 à 21:13:10

                    Citation : Lolilolight

                    C'est donc plus rapide de traiter une Exception que de faire des tests.



                    Non ! Dans la majorité des cas, il faut faire des tests. Mais quand les tests sont trop complexes, ou déjà effectués par la méthode que tu appelles (En l'occurence, Integer.parseInt *refait* les tests pour savoir si le nombre est bien formaté...), il est plus simple de passer par une exception (Et c'est également plus performant).

                    Donc les exceptions : oui, mais seulement dans les cas complexes. Ou bien quand tu ne peux pas retourner une valeur de type "null" qui indiquerait une erreur (Dans un constructeur par exemple, ou dans certaines méthodes). Sinon, un test.

                    Après, ce n'est pas une règle absolue, il existe beaucoup de cas où les exceptions valent mieux que les tests. Mais il ne faut pas en abuser. Si tu peux faire un test simple, fais-le.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    TextField, formatage

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown