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 ********/
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
     }
   }
}
Avez vous une petite idée d'ou peut venir l'erreur ?