salut !
J'ai écrit un petit programme qui doit indiquer à l'utilisateur si son mot est correct ou pas(si ce n'est pas le cas une fenetre s'ouvre est indique l'erreur puis affiche le mot en rouge) lorsqu'il le tape dans plusieurs JtextField. J'ai utlilisé regexp pour faire cela. Mais bizarrement lorsqu'on tape un mot incorrect avec un nombre pair de lettre, le programme le laisse passer.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /*******le champs Jtextfield****************/ //champs nom JLabel chpsnom = new JLabel("Nom"); chpsnom.setBounds(30,50,30,20); frame.getContentPane().add(chpsnom); fieldname = new JTextField(); fieldname.setBounds(100,50,150,20); fieldname.addKeyListener(this); frame.getContentPane().add(fieldname); /******fin ********/Avez vous une petite idée d'ou peut venir l'erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 /******** actionPerformed + traitement du JTexfield********/ public void actionPerformed(ActionEvent e) { //recupérer la nom du bouton qui a été cliqué String command = e.getActionCommand(); //modèle de comparaison pour le regexp String model ="[^a-zA-z0-9\\séè\\-_'&]"; String model2 ="[^0-9]"; if(command.equals("ok")) { //test les conditions, si toutes les JtextField sont différents de null alors //on passe à else sinon on affiche un message if(fieldname.getText().equals("") || fieldaddrese.getText().equals("") || fieldtel.getText().equals("") || fieldcodepostale.getText().equals("") || fieldville.getText().equals("")) { JOptionPane d = new JOptionPane(); d.showMessageDialog(frame,"Un ou plusieurs champs n'a pas été rempli", "Erreur de frappe",JOptionPane.INFORMATION_MESSAGE); } else { if(!(fieldname.getText().equals(""))) { fieldname.setForeground(Color.black);//repasse en noir si le texte est rouge String texte = fieldname.getText(); Pattern p = Pattern.compile(model); Matcher m = p.matcher(texte); while(m.find()) { if(m.find()== false) { count++; fieldname.setForeground(Color.red); break; } } }//fin if1 if(count == 0) { try { //récupèrer les données de la fenêtre DataFournisseur f1 = new DataFournisseur(); f1.setnomFournisseur(fieldname.getText()); //envoie les données à l'objet FrameFournisseur FrameFournisseur dataF1 = new FrameFournisseur(f1,0); //dataF1.fenetre(); frame.dispose(); } // recupérer une exception si le champs fieldtel ou fieldcodepostale //ne sont pas correctement reconvertis en int catch(NumberFormatException evt) { JOptionPane message_error = new JOptionPane(); message_error.showMessageDialog(frame,"Une erreur s'est produite,veuillez resaisir les données", "Erreur",JOptionPane.ERROR_MESSAGE); } }//fin count else if(count !=0){ JOptionPane message_error = new JOptionPane(); message_error.showMessageDialog(frame,"Certains champs n'ont pas été correctement remplis", "Erreur de frappe",JOptionPane.INFORMATION_MESSAGE); count = 0;// réinitialise à zéro pour la prochaine vérification } } }
Partager