Fenetre modale et JDialog

kungouf Messages postés 29 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 15 février 2005 - 20 déc. 2004 à 14:02
kungouf Messages postés 29 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 15 février 2005 - 5 janv. 2005 à 15:50
bonjour a tous

j'ai une application java qui demande a l'utilisateur des informations a saisir.
pour cela une JOptionPane.showInputDialog ne me suffit pas

j'ai donc cree une JDialog pour les saisies dans lequel j'ai mis un champs texte une JComboBox et un boutton de validation

mon probleme se pose au niveau de l'execution du programme, en effet le programme n'attend pas la saisie de l'utilisateur avant de passer a l'etape suivante.
Comment faire pour justement que le programme soit en attente de la saisie de maniere simple?

voici mon code en resume:

for(int i=0;i < nbsaisie; i++){

MonJDialog dial = new MonJDialog();

}

-> le programme va donc cree 2 fois de suite MonJDialog sans attendre la saisie de l'user

comment eviter cela et avoir un systeme de fonctionnemnent similaire a JOptionPane.showInputDialog() qui attend la saisie de l'utilisateur avant de poursuivre le programme ?

3 réponses

Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
20 déc. 2004 à 15:01
Salut,

il faut que tu créés des JDialog modales.
Regarde la doc de java, la classe JDialog fournit plusieurs constructeurs avec comme paramètre un boolean modal que tu dois mettre à true si tu veux que tes fenêtres soit modales, ce qui entraînera le fait que la suivante ne s'ouvrira uniquement que lorsque la précédente sera détruite.

Un super(...........,true,....) au début de tes constructeurs de ta classe MonJDialog devrait faire l'affaire.

@++
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
20 déc. 2004 à 15:16
Précision supplémentaire :

le fait de rendre tes JDialog modales empêchent l'utilisateur d'accéder aux autres fenêtres de ton appli tant que l'une de tes JDialog n'est pas fermée.

Si tu veux lui laisser accès à l'ensemble de l'appli et gérer tes JDialog comme tu le souhaites, il faut que tes JDialog soit non modales donc (elles le sont par défaut) et les gérer de la sorte par exemple :

Pseudo code :

...
...
//Création de la première JDialog
si nbsaisie > 0
alors créér JDialog
...
...

Dans l'événement fermeture de ta JDialog (windowClosed() de WindowListener) faire :

nbsaisie -- ;
si nbsaisie >0
alors créér JDialog

Voilà c'est une autre solution.
Mais je te conseille les fenêtres modales, c'est beaucoup plus propre et plus agréable pour l'utilisateur.

@++
0
kungouf Messages postés 29 Date d'inscription lundi 3 mai 2004 Statut Membre Dernière intervention 15 février 2005
5 janv. 2005 à 15:50
merci de ta reponse c'est exactement ce qui me fallait :)
0
Rejoignez-nous