Probleme de double dans un JTextField - Java - Programmation
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.
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
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
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).
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
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) ','
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)
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
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.
Marsh Posté le 04-01-2017 à 04:45:31
Je vous propose de consulter ce lien *********** qui m'a aidé à resourdre ce problème[][][/][/]
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.
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