Bonjour!
Je veux créer un TextField pour saisir une adresse IP, j'ai fait ça en surveillant la frappe de l'utilisateur, mais je trouve ça ni élégant ni efficace (surtout avec le MIDP).
Avez-vous une meilleure idée:
Bonjour!
Je veux créer un TextField pour saisir une adresse IP, j'ai fait ça en surveillant la frappe de l'utilisateur, mais je trouve ça ni élégant ni efficace (surtout avec le MIDP).
Avez-vous une meilleure idée:
Bonjour.
Pourquoi ne pas utiliser la classe JFormattedTextField?
Ou tout simplement 4 champ textes... (JTextFields par exemple)
Après il suffit d'ajouter un contrôle individuel sur chaque champ pour vérifier sa validité.
Si en plus tu as envie de les concaténer dans une chaine... ça ne me semble pas bien difficile![]()
Je travail avec le profil MIDP donc pas de JFormattedTextField, même pas de JTextField; il ya seulement TextField (c'est déjà pas mal)
Ah d'accord, j'avais pas vu que tu utilisais J2ME du coup j'ai répondu à côté de la plaque.![]()
Ne connaissant pas J2ME, je laisse quelqu'un de plus qualifié te répondre.
Je ne connais pas MIDP (jamais codé avec)... mais ma solution peut très bien marcher quand même !
Tu mets 4 TextField les uns à côté des autres, que tu abonnes à un listener.
Quand l'utilisateur tappes un caractère non numérique, tu lui balance un message du genre "Je veux pas de ton caractère, seulement des chiffres, entre 0 et 255.". Si il tappe sur Espace, tu passe au TextField suivant, sauf si la valeur saisie n'est pas correcte. Tant que toutes les valeurs saisies ne sont pas correctes, tu désactives le bouton suivant/enregistrer/valider ou je ne sais quoi que tu utilises après la saisie de l'@IP.
Je te déconseilles vivement de faire le test sur la valeur au fur et à mesure de la saisie, car ça implique une gestion carctère par caractère qui n'est pas forcément évidente/géniale. Je l'avais fait en VB, et c'est un peu chiant/nul !
Par contre, quand tu passe ton focus sur un nouveau champ, tu récupères la valeur du champ précédent (méthode getText()) puis sur le Sstring qui t'es retourné, tu fais un Integer.parseInt(tonChamp.getText()). Si le int qui t'es retourné n'est pas entre 0 et 255, tu informes ton utilisateur, et tu remets le focus sur ton champ non valide.
Libre à toi de faire une gestion plus souple, comme par exemple ne vérifier la validité de la saisie qu'à la fin, après avoir rempli tous les champs...
Je peux restreindre la saisie à des caractères numériques, ça c'est facile à faire.
Par contre, je ne sais pas comment aliger des champs de text sous MIDP et de plus, il n'y a pas de notion de focus (on travaille avec un téléphone mobile après tout)
Si tu n'as pas de focus, tu peux toujours faire un truc du genre bouton valider -> contrôle de tous les champs.
Par contre, je ne peux pas t'aider pour aligner des champs. Avec J2SE, un petit coup de FlowLayout et on en parle plus, par contre avec J2ME... Désolé !
Merci, quand même leminipouce.
Partager