Fermeture avec le "x" marche pas..kelkun peut aider?

afura2004 Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 avril 2004 - 2 avril 2004 à 16:09
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 9 avril 2004 à 20:31
Salut,

J'ai un petit problème avec la fermeture de ma fenêtre en cliquant sur le "X" situé en haut à droite de ma fenêtre. Le problème se figure qu'à chaque fois que je clique dessus, il me demande une confirmation et même si je choisi non, la fenêtre se ferme pareil. Voici le code que j'ai écris pour ça :

public class Bureau extends JFrame {

public Bureau()
{
setSize( 800, 700 );
setVisible( true );

this.addWindowListener(
new WindowAdapter() {

public void windowClosing(WindowEvent e) {

int reponse = JOptionPane.showConfirmDialog(null, "Voulez-Vous quitter le logiciel ?",
"Fermeture du logiciel", JOptionPane.YES_NO_OPTION);
System.out.println(reponse);
if (reponse == JOptionPane.NO_OPTION) Bureau.this.windowClosed();
}
}
); //fin du AddWindowListener

}

On dirait qu'il ne rentre même pas dans le if, la fenêtre se ferme même si je choisi l'option non. Svp de l'aide! Merci à tous!! Bye!

17 réponses

afura2004 Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 avril 2004
2 avril 2004 à 16:11
J'ai oublié que après l'écouteur de windowsListener, j'ai ce bout de code :

protected void windowClosed() { System.exit(0); }

C'est la méthode dont j'appelle si il rentre dans ma boucle if. Merci encore une fois!
afura2004 Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 avril 2004
2 avril 2004 à 16:15
Salut,

J'ai remarqué que j'ai fait une petite erreur dans mon code, c'est dans la boucle if.. J'ai inversé la condition, alors j'ai changé ma conditon pour :

if (reponse == JOptionPane.YES_OPTION)Bureau.this.windowClosed();

J'ai changé cette condition et cela ne fonctionne toujours pas...la fenêtre se ferme même si je dis non à la confirmation qu'il me demande. Svp de l'aide!! Merci! Bye
HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
2 avril 2004 à 16:19
Salut,

quand tu compares des chaines de caractères en Java, ce n'est pas le signe == mais il faut mettre :

if (reponse.equals(JOptionPanel.YES_OPTION)

c'est la méthode .equals() qui fonctionne pour les chaines de caractères

Voilà, j'espère que ça va fonctionner

Fanny
afura2004 Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 avril 2004
2 avril 2004 à 17:07
Salut,

Hmmm..ca fonctionne pas ton code parce que ma "reponse" c un integer et non un String..alors ca me saute des erreurs de types et d'execption..regardre bien le code encore une fois :

public class Bureau extends JFrame {

public Bureau()
{
setSize( 800, 700 );
setVisible( true );

this.addWindowListener(
new WindowAdapter() {

public void windowClosing(WindowEvent e) {

int reponse = JOptionPane.showConfirmDialog(null, "Voulez-Vous quitter le logiciel ?", "Fermeture du logiciel", JOptionPane.YES_NO_OPTION);

if (reponse == JOptionPane.YES_OPTION) Bureau.this.windowClosed();
}
}
); //fin du AddWindowListener

protected void windowClosed() { System.exit(0); }

}

Comme tu peux le voir, c'est "int reponse =..." Svp de l'aide encore! Merci!

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

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
2 avril 2004 à 18:15
Salut,

il faut changer l'opération par défaut sur la fermeture. Par défaut quand on clique sur la croix la frame disparait mais l'appli tourne toujours.
Sur ta frame tu fais
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

Ta fenêtre se se cache plus et c'est à toi de gérer ça.
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
2 avril 2004 à 18:28
GodConan :clown)

pour HFanny ce n est pas la methode equals qui ser a comparer 2 chaine de caractere ;o) mai la mathode compareTo( String s )... ;o)
equals etant une methode d Object et fonctionnant legerement diferement ;o)

autrement pour la question qui nous interresse ;o) ton code semble bon ;o)
il te faut juste rajouter une proprieter a ta frenetre :
setDefaultCloseOperation(javax.swing.JFrame.DO_NOTHING_ON_CLOSE);
et voila ....

++
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
2 avril 2004 à 18:36
GodConan :clown)

hihi le temp que je tape la reponse ;)o

kirua12 avai repondu ;o) héhé et dailleur sa reponse et mieu que la mienne g pas fait gaf ou j allai chercher ma constante ;o)

++
afura2004 Messages postés 15 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 21 avril 2004
2 avril 2004 à 19:09
Salut tout le monde,

Merci a tous de m'aider..ca marche présentement la...merci a tous!! Si j'ai encore des questions je viendrai vous voir encore..!! hehe! Bye!
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
5 avril 2004 à 10:21
:big) Neodante :big)

Juste pour GodConan, la méthode equals sert bien à comparer 2 chaine de caractères ... en renvoyant un booléen -> comparaison caractère à caractère !
La fonction compareTo est un peu plus poussé car elle cherche une comparaison lexicographi...chose ce qui donne comme pour la fonction strcmp() du C un int -x/0/x selon que le mot est classé avant ou après dans un dico donc on ne s'en sert pas pour les mêmes choses ... ou 0 si égal !
Mais cela revient quasiment au même ... j'utilise equals pour savoir si 2 chaines sont identiques ... et l'autre pour le tri ... m'enfin vu les algo de comparaison .. y a pas franchement d'avantages m'enfin j'aurais toujours tendance à les utiliser de ma manière ! lol
@+ everybody !

[Responsable www.neogamedev.com]
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
5 avril 2004 à 19:56
GodConan :clown)

While ;o) vi en fait je vien de matter les 2 source ;o) difficile de dire quel algo est le plus rapide mais en effet c probablement le equals()...
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
6 avril 2004 à 09:26
:big) Neodante :big)

M'enfin c'est juste que les 2 méthodes ne servent pas tout à fait à la même chose même si on peut les faire parler pour quelles disent la même chose ! lol
@++

[Responsable www.neogamedev.com]
safisoft Messages postés 489 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 13 mai 2009 6
9 avril 2004 à 12:01
Je X que ca serait plus facile d'implementer WindowListener, declarer ses differentes abstract classes vides, et mettre dans windowClosed et windowClosing System.exit(0);
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
9 avril 2004 à 17:11
GodConan :clown)

sur ;o) si t aime bien ecrire des ligne de code pour rien... ;o)

moi perso je fait une methode exit ds mes appli mais ds un sample c cette methode la plus rapide... (et courte)
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
9 avril 2004 à 19:53
:big) Neodante :big)

Moi je suis plutôt comme satisoft ... m'enfin ça tout le monde s'en fout !!! lol
Sérieusement je pense que mettre les méthodes vides permettent d'appréhender l'avenir de l'application, même si c'est pas long à remettre si y a besoin ...
M'enfin DefaultHandler c'est comme même bien ! lol
@+

[Responsable www.neogamedev.com]
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
9 avril 2004 à 20:08
GodConan :clown)

ouai si on veu mais ds tou les cas ds se cas faut as use l implementation direct mais plutot une class interne c bcp plus facil pour s y retrouver ;o) mais n empeche que les adatpter c qd meme mieu que les listner... ;o) héhé
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
9 avril 2004 à 20:26
:big) Neodante :big)

Le résultat est le même ... m'enfin ces interfaces là on été fait pour écrire juste les lignes de code nécessaire, ce qui n'est pas plus mal pour du dev rapide ... ce qui aujourd'hui est le cas de 100% des projets info ! A moins que certains boss vous laisse le temps de développer en paix ... perso le mien c'est pas le cas !!! Et vous ??? lol
@+

[Responsable www.neogamedev.com]
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 11
9 avril 2004 à 20:31
GodConan :clown)

ouai on en ai tous la ;-( ......
Rejoignez-nous