NiTrOuS Posté(e) le 27 novembre 2005 Partager Posté(e) le 27 novembre 2005 Bonjour à tous, voilà je voudrais faire un controle de saisie dans un textfield. Pour cela, j'utilise le code suivant: public void jTextField1_keyTyped(KeyEvent e) { String test[]={"1","2","3","4","5","6","7","8","9","0"}; if(e.getKeyChar()==test[]) e.consume(); } Apparement, il n'aime pas trop mon if(e.getKeyChar()==test[]) Je sais que j'ai fait une erreur quelque part mais ou ? Si je fais public void jTextField1_keyTyped(KeyEvent e) { if(e.getKeyChar()=='1' e.consume(); } ca marche, mais je n'arrive pas a appliquer avec une chaine de caractères Lien vers le commentaire Partager sur d’autres sites More sharing options...
AirChtit Posté(e) le 27 novembre 2005 Partager Posté(e) le 27 novembre 2005 Tu ne peux pas comparer un char (e.getChar()) avec un tableau de caractère (test[]). T'as deux solutions, soit tu poses un filtre sur le textfield, soit tu fais une boucle ou tu compares ton caractère tapé avec chaque valeur du tableau. En terme de vitesse, le filtre de saisi est bien plus rapide. Pour créer un maskFormatter (filtre de saisi), rien de plus simple: /** * Permet de ne saisir que des chiffres * @return MaskFormatter */ public MaskFormatter createFormatter() { MaskFormatter formatter = null; String mask = "*"; try { for (int i = 0; i < 256; i++) { mask += "#"; } formatter = new MaskFormatter(mask); } catch (java.text.ParseException exc) {} formatter.setValidCharacters("0123456789"); return formatter; } et à la déclaration de ton JtextField: //On crée le JTextField jtf = new JFormattedTextField(createFormatter()); Conernant les imports nécessaires: import javax.swing.text.*; de vrait faire l'affaire. Cordialement, AirChtit Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 27 novembre 2005 Auteur Partager Posté(e) le 27 novembre 2005 Désolé de t'ennuyer, mais en qui concerne la deuxieme solution, comment fait-on pour comparer avec chaque élément du tableau ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
AirChtit Posté(e) le 27 novembre 2005 Partager Posté(e) le 27 novembre 2005 Désolé pou rle temps de réponse, j'atais un peu dehors par ce temps... donc, si ma solution ne te plait pas pour une raison ou pour une autre, il te suffit de passer par un booléen que tu changes si l'élément ne correspond pas.ou correspond, c'est au choix. exemple: public void jTextField1_keyTyped(KeyEvent e) { String test[]={"1","2","3","4","5","6","7","8","9","0"}; boolean check = false; //Parcours du tableau for (int i =0; i< test;length; i++){ if(e.getKeyChar()==test[i]) check = true; break(); } //Si on n'a pas de correspondance: if (check==false) e.consume(); } J'imagine que quelquechose comme ça devrait fonctionner, après niveau optimisation, c'est franchement pas top, j'ai mis un break pour éviter les recherches inutiles mais c'est pas très propres non plus, on évite en théorie. Maintennt, entre code accessible et code qui demande à regarder dans l'api, c'est toi qui vois. Sur ce, bonne soirée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 27 novembre 2005 Auteur Partager Posté(e) le 27 novembre 2005 Merci pour ton aide, je ne recherche pas de performance, c est juste un petit projet que je dois rendre pour l'école Lien vers le commentaire Partager sur d’autres sites More sharing options...
freeze Posté(e) le 28 novembre 2005 Partager Posté(e) le 28 novembre 2005 Bonjour, le titre de ce sujet étant approprié je n'ai pas jugé en créer un autre... en effet j'ai un petit souci avec un menu déroulant vertical en java, mes sous menus restent toujours apparent. <div id="menuv"> <dl> <dt onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre();">Menu</dt> <dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre();"> <ul> <li><a href="http://"> sous menu 1</a></li> <li><a href="http://">sous menu 2</a></li> </dd> </dl> <script type="text/javascript"> <!-- window.onload=montre; function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} } //--> </script> </div> On m'avait conseillé de mettre onmouseover dans la balise dl ou div mais cela ne semble pas fonctionner. Ps ceci est pour un blog, donc je ne suis pas "maitre" de tout mais pourtant mon menu déroulant horizontal tourne sans problème. (mon blog) Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 28 novembre 2005 Auteur Partager Posté(e) le 28 novembre 2005 C'est du javascript ca, pas du java lol Faut pas confondre, c'est pas du tout pareil ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
freeze Posté(e) le 28 novembre 2005 Partager Posté(e) le 28 novembre 2005 C'est du javascript ca, pas du java lol Faut pas confondre, c'est pas du tout pareil ! allez je suis Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.