Fermer une fenêtre modale par programme ??

cs_tyty26 Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2003 - 2 avril 2003 à 10:59
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 - 2 avril 2003 à 15:25
Bonjour,

J'ai un gros souci : je ne parviens pas à fermer ma fenêtre secondaire (modale) au cours de ma gestion d'erreur.
En swing il me semble que this.setVisible(false) suivi de this.dispose.
Mais ce code ne fonctionne que lorsque je CLIQUE réellement sur mon bouton de fermeture, pas lorsque je l'appelle avec du code...

J'ai essayé de créer un pseudo evenement et d'autres petites choses mais rien à faire.

Merci de votre aide car je sèche quelque peu...
Thierry

8 réponses

cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
2 avril 2003 à 11:37
salut,
si tu dis qu elle est modale c est que c est une derivée de JDialog donc.
Pour les JDialog, le dialogue se termine effectivement avec le setVisible(false) que tu peux appeler a n'importe quel moment.
Je ne comprend pas vraiment ton probleme : ta fenetre reste a l'écran ?
Duss
0
cs_tyty26 Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2003
2 avril 2003 à 11:42
Salut,
Effectivement, la fenêtre reste affichée bien qu'elle soit passée par le code setVisible(false) et dispose() !
Ca c'est si j'en fait la demande par programme (dans le constructeur par exemple), sans passer par un evènement sur la fenêtre.
En revanche, lorsque je passe par un simple clic d'un bouton, ca marche : la fenêtre se ferme!

J'ai essayer de provoquer le clic du bouton par programmation (doClick(), ou l'appel du ActionPerformed()) mais ca ne veut ren savoir....

Est-ce impossible de fermer une fenêtre modale sans passer par un evenement sur la fenêtre???

Merci de ton aide
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
2 avril 2003 à 11:54
normalement oui,
c est bizarre ton truc, montre moi ton code stp
Duss
0
cs_tyty26 Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2003
2 avril 2003 à 11:59
Le constructeur de ma fenêtre modale appelle la methode suivante :

private void afficheTableau() {

// Récuperation des contenants recherchés et affectation dans le tableau
Hashtable contHash = controlEcrans.getContenantFactory().getItems();
if (contHash!=null) {
for (Enumeration e=contHash.elements(); e.hasMoreElements();) {
Contenant cont =(Contenant) e.nextElement();
if (testbidonPourAffichage) {
// Methode perso pour afficher les données
setLigneTableauWithContenant(cont,i_ligne);
tableauContenant[i_ligne] = cont.getItemId();
i_ligne++;
}
}
// Si pas de ligne a afficher, exit vers fenetre principale
if (i_ligne==0) {
Ivanoe_user_dialog dialog = new Ivanoe_user_dialog(ivanoe,"IVANOE Sondages" ,"", true, "Aucun contenant trouvé");
dialog.show();
// C'est ici que le bat blesse
this.setVisible(false);
this.dispose();
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
2 avril 2003 à 13:18
effectivement,
meme en passant par un dispatchWindowEvent ca ne fait rien,
c 'est bizarre.
Meme le setModal(false) n y fait rien c est vraiment bizarre
je creuse le sujet et je te tienx au courant !!!
Duss
0
cs_tyty26 Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2003
2 avril 2003 à 13:22
Je te remercie.
Je continue de chercher également ;-)
0
cs_tyty26 Messages postés 5 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 2 avril 2003
2 avril 2003 à 14:48
0
cs_Duss Messages postés 890 Date d'inscription lundi 8 avril 2002 Statut Membre Dernière intervention 29 juillet 2004 11
2 avril 2003 à 15:25
ok je vais regarder ca !
sinon j ai trouvé un truc qui devrait marcher
tu met un booleen dans ta classe par exemple :
private boolean toClose;

puis tu rajoute une methode startDialog par exemple qui va demarrer le dialog avec ta boite :
public void startDialog()
{
while (!toClose)
   setVisible(true);

setVisible(false);
dispose();
}


du coup, quand tu instancie ta dialog, tu ne fais pas de setVisible(true) et quand tu as une erreur, tu fais un toClose = true;

et la ca fermera ta dialog !!!
Duss
0
Rejoignez-nous