# Java > Interfaces Graphiques en Java > AWT/Swing >  Vrifier qu'un jtextfield n'est pas vide

## okayassu

bonjour ,

j'ai cre un formulaire ,  partir de ce formulaire je peux mettre  jour la carte client dans la BDD .

comment faire pour que mes jtextfield ne puissent pas etre vides par defaut , afin de ne pas pouvoir valider mon update si un des champs est vide ?

merci d'avance pour votre aide

----------


## joel.drigo

Salut,

Il y a 2 aspects : la validation des valeurs  passer au update qui n'a rien  voir avec les champs de saisie (ou avec le fait qu'on saisisse dans une interface graphique et le _feedback_ donn  l'utilisateur pour lui faire comprendre qu'il saisit des valeurs non autorises, ou l'empcher mme de le faire).

Pour la premire partie, il suffit de faire une mthode qui valide les champs selon les rgles et qui renvoit true si c'est ok et false sinon. Par exemple, dans ton cas, tester si la variable String correspondant  ta donnes n'est pas vide (avec !chaine.isEmpty()).

Ensuite, il suffit de ne pas lancer la requte si la mthode retourne false. Et dans le cas ou a retourne false, on affichera, par exemple, un message (JOptionPane) pour indiquer les champs qui devraient ne pas tre vides le cas chant.

Le second aspect est dj plus vaste et peut tre fait de diffrentes manires : on peut par exemple,  autoriser la saisie de valeurs incorrectes et activer ou pas un bouton "Sauvegarder" dans un formulaire en fonction du rsultat de cette mthode  : il faut appeler la mthode pour tout action de modification faite dans le champ de saisie et appeler setEnabled(true) ou setEnabled(false) sur le bouton, selon.

Pour couter la validation de la saisie d'un champ, on enregistre un ActionListener sur le champ (jtextfield.addActionListener(...)). Pour couter les modifications faites au fur et  mesure, on pourra utiliser un DocumentListener (jtextfield.field.getDocument().addDocumentListener());

On peut afficher des indications graphiques de mauvaises saisies (message dans le formulaire, bordure rouge ou icne...) qu'on affichera ou pas de la mme manire qu'on dtermine s'il faut activer ou pas le bouton de sauvegarde ci-avant.

On peut interdire galement la saisie des valeurs incorrectes : on peut utiliser un InputVerifier pour valider le contenu du champs :



```

```

Celui-ci ne sera dclench que lorsqu'on tente de sortir du champ (on peut donc saisir une valeur vide), mais on ne pourra pas sortir (ni par tabulation, ni en cliquant sur un autre champ), mais on pourra lancer des actions (cliquer sur un bouton dans le formulaire), donc il faudra de toute manire toujours vrifier la valeur des champs avant de lancer la requte. 

On peut galement directement empcher l'utilisateur de vider le champ, en utilisant un DocumentFilter :



```

```

----------


## okayassu

merci pour ta rponse je vais tester tout a et reviens vers toi pour te dire si a s'est arrang  ::): 

(et bien sr pour le bouton rsolu si c'est le cas ^^)

----------


## okayassu

mais ceci dit je pensais plus un "required" comme en html.... a existe a? ^^

----------


## joel.drigo

Non.

----------


## okayassu

alors j'ai tent cela :



```

```



```

```

et cela fonctionne mais problme ,j'ai une dizaine de champs  vrifier , je ne vais pas appeler 10 fois ma mthode je suppose ^^

----------


## joel.drigo

Si, tu vas l'appeler autant de fois qu'il y a de champ  valider avec cette mme rgle, mais il faut sparer la partie validation de la partie update.

Si tu fais :



```

```

ou


et



```

```





Ensuite, pour viter d'avoir plusieurs conditions avec l'appel mthode de validation, tu peux stocker tes champs dans un tableau ou une collection, et itrer dessus.



```

```

et l'appel :



```

```

Par contre, tu ne pourras pas afficher dans le dtail les champs qui manquent : mais tu pourrais retourner une liste des champs invalides, par exemple, au lieu d'un boolen (si la liste est vide, tous les champs sont valides)

----------


## okayassu

que signifient les 3 points dans :



```
public boolean checkFields(String...fields)
```

----------


## joel.drigo

Les trois points indiquent qu'on peut avoir un nombre quelconque de valeurs de type String, en paramtre de la mthode, valeurs qui seront rcupres dans la mthode sous forme d'un tableau. 

Ecrire 



```

```

C'est un peu comme crire 



```

```

Mais la diffrence essentielle, c'est que quand on appelle la mthode, dans le premier cas on peut l'appeler comme a



```

```

Alors que dans le second, il faudrait crire :




```

```

A noter que pour le premier cas, le second appel, avec tableau fonctionne aussi. 

A noter enfin que seul le dernier paramtre d'une mthode peut tre dclar comme  :



```
public void maMethode(int param1, String param2, int...desParams) { // ok
```



```
public void maMethode(int param1, int...desParams, String param2) { // ne compile pas
```

----------


## okayassu

a fonctionne nickel  ::): 

un norme merci  toi

----------

