Probleme de double dans un JTextField

Probleme de double dans un JTextField - Java - Programmation

Marsh Posté le 10-12-2009 à 13:44:00    

Salut a tous,
 
Voila mon problème:
je veux limiter la saisie dans un JtextField a un Double, avec ce code qui marche:
 
te = new JTextField();
         
        te.addKeyListener(new KeyAdapter()
        {
            public void keyTyped(KeyEvent k)
            {
                if (! Character.isDigit(k.getKeyChar()))
                {
                    k.consume();
                }
            }
        });
Je bloque effectivement tout ce qui n'est pas un nombre.
Mais je ne trouve pas comment autoriser le point ou la virgule.
Si quelqu'un sait comment faire, merci d'avance

Reply

Marsh Posté le 10-12-2009 à 13:44:00   

Reply

Marsh Posté le 10-12-2009 à 15:57:54    

s'pas un peu violent ?
 
une validation à postériori, c'est pas plus simple et moins surprenant pour l'utilisateur qui se dit pas pas "tiens, mon clavier est pété"
 
sinon, dans ton if, tu testes ',' et '.', ça devrait le faire.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 10-12-2009 à 16:15:52    

Effectivement je rajoute un joptionpane.showmessage pour eviter les bris de clavier.
Mais je n'arrive pas a comparrer un Char et une String

Reply

Marsh Posté le 10-12-2009 à 16:21:58    

et matcher le champ complet sur NumberFormat ?

 

k.getKeyChar()==',' ?


Message édité par brisssou le 10-12-2009 à 16:24:48

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 10-12-2009 à 16:33:14    

Désolé: marche pas (k.getKeyChar()==',')
 
Tu veut dire quoi par matcher?
et j'ai pas trouver dans NumberFormat pour faire 120.25 par exemple

Reply

Marsh Posté le 11-12-2009 à 01:30:51    

Tu dois valider l'ensemble du texte présent dans le champ et pas uniquement le dernier caractère entré. Parce que tu ne peux avoir qu'une seule virgule, par exemple.
 
Le plus simple est que tu tentes de faire un Double.valueOf(string) et si une NumberFormatException est levée, tu refuses l'entrée sinon tu l'acceptes.
Une autre solution consiste à valider la chaîne entrée en la soumettant à une expression régulière, qui sera plus restrictive (n'autorisant pas les espaces au début et à la fin par exemple).

Reply

Marsh Posté le 11-12-2009 à 08:36:38    

C'est bon je trouvé hier soir:
 te = new JTextField();        
    te.addKeyListener(new KeyAdapter()
    {
        public void keyTyped(KeyEvent k)
        {
           if (!Character.isDigit(k.getKeyChar()) && k.getKeyChar() !=46)
                k.consume();
        }
    });
 
Je suis obligé de faire comme ça car quand je rentre un caractère je rempli un autre JTextField affecté d'un pourcentage.
J'ai regardé Matcher ça vas me servir pmus tard.
Merci de votre aide

Reply

Marsh Posté le 11-12-2009 à 11:02:39    

Mais si tu tapes 2 virgules ça ne fonctionnera pas.
 
Au lieu d'utiliser la valeur 46 tu peux aussi écrire: (int) ','

Reply

Marsh Posté le 11-12-2009 à 11:38:29    

En effet je récupère l'erreur sur le second JTextField.
Par contre j'aimerais faire le contraire, c'est a dire:
if(Character.isDigit(k.getKeyChar()) && k.getKeyChar() ==46)

Reply

Marsh Posté le 11-12-2009 à 11:56:31    

petite coupure internet!!
Je reprends:
 
if(Character.isDigit(k.getKeyChar()) && k.getKeyChar() ==46)  
je valide
else
k.consume();
 
Je ne trouve pas comment valider l'entrée

Reply

Marsh Posté le 11-12-2009 à 11:56:31   

Reply

Marsh Posté le 13-12-2009 à 16:52:20    

Tu veux dire si c'est un digit OU une virgule.
Ca ne peut pas être les deux à la fois.

Reply

Marsh Posté le 17-12-2009 à 12:58:50    

j'autorise les chiffres et un point

Reply

Marsh Posté le 17-12-2009 à 13:22:22    

Je disais juste que ton && doit être un ||.

Reply

Marsh Posté le 04-01-2017 à 04:45:31    

Je vous propose de consulter ce lien *********** qui m'a aidé à resourdre ce problème[][][/][/]

Message cité 1 fois
Message édité par Harkonnen le 10-01-2017 à 09:02:37
Reply

Marsh Posté le 10-01-2017 à 09:02:23    

felofive a écrit :

Je vous propose de consulter ce lien ******* qui m'a aidé à resourdre ce problème[][][/][/]


Etant donné la forte ressemblance entre ton pseudo (qui semble constitué des 3 premières lettres de ton prénom et de la première lettre de ton nom, auxquels tu as accolé "five" ) et ton nom/prénom présents sur le lien Youtube que tu as posté, ajouté au fait que le post initial a été posté il y a maintenant 8 ans, je suppose que tu comprendras parfaitement que j'édite ton post pour supprimer le lien étant donné qu'il s'agit sans aucun doute d'un spam.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed