Téléchargement
illégal
Posez votre question Signaler

Fermer une fentre en JAVA depuis un menu

Vincent B - Dernière réponse le 23 déc. 2003 à 10:15
Bonjour à tous,

Bonnes Vacances pour ceux qui y sont, moi c'est seulement le 24 à midi. En attendant, j'essaie de trouver le bon code pour fermer une fenetre à partir d'un menu.

J'ai lu plusieurs codes, mais cela ne fonctionne pas. Puis-je utiliser addActionListener pour le rattacher au item correspondant ou dois-je utiliser WindowListener ? Le problème ensuite une fois la bonne méthode trouvée comment la liée au item ?

Merci d'avance pour vos suggestions,


Vincent B
Lire la suite 

Fermer une fentre en JAVA depuis un menu »

4 réponses
Réponse
+0
moins plus
Salut,

Tu peux, par exemple, utiliser un WindowListener. Par ex :
public MaFenetre extends JFrame inplements WindowListener {
... // attribut de la classe
public MaFenetre() { this.addWindowListener(this) ; } // constructeur par défaut
}

L'inconvénient de cette méthode est que tu dois absolument avoir les 7 méthodes que présente cette interface dans ta classe (ce qui peut rendre le code assez difficile à lire ..)
Quoiqu'il en soit, la méthode à modifier est la suivante :
public void windowClosing(WindowEvent e) {
this.dispose() ; // tu peux aussi utiliser this.hide() suivant ce que tu veux
}

Et enfin tu n'as plus qu'à appeler cette méthode depuis la méthode qui est liée à ton sousMenu :
public void actionPerformed(ActionEvent e) {
if ( e == monSousMenu ) { this.windowClosing(null) ; }

J'espere que ça t'aidera ...

sfx
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir,
pour la JFrame j'ajoute dans le constructeur:
this.addWindowListener(new WindowAdapter() {
public void windowClosing() {
System.exit(0);
}
});
Puis au niveau du menu par exemple:
quitter = new JMenuItem("Quitter");
quitter.setActionCommand("quitter");
quitter.addActionListener(this);
Il faut ensuite implementer la méthode actionPerformed:
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("quitter")) {
System.exit(0);
}
}
a+
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour à tous,

Merci pour vos réponses. Sfx, j'ai essayé ta méthode mais je ne suis pas parvenu à avoir le bon résultat. Philtrain, je ne l'ai codé comme toi mais la solution que j'ai trouvé s'y rapproche :

je n'utilise pas setActionCommand("quitter"),
j'ai fait directement quitter.addActionListener( new ActionQuitter())

ActionQuitter est une classe encapsulée qui contient la méthode public void actionPerformed(ActionEvent e) dont le contenu est simplement System.exit(0).

J'ai fait tous les tests pour vérifier que ca marche, et je ne renconte plus aucun probleme.


Ainsi pour chaque élément de mon menu j'ai une classe encapsulée dédiée à un item contenant dans le constructeur l'action et ayant la méthode actionPerformed. De cette façon, j'ai réglé un autre probleme que j'avais au niveau de la structure du programme.


Encore Merci,


Vincent B
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Vincent,
La solution de la classe anonyme est en effet une bonne solution. Elle a pour principal avantage d'être compacte à écrire et personnellement je l'utilise pour les applications légères. Toutefois, elle n'est plus très adaptée lorsqu'il faut gérer des évènements complexes ou multiples.
La méthode de la classe écouteur que je proposais permet alors de clarifier le code.
a+
Ajouter un commentaire
Ce document intitulé « Fermer une fentre en JAVA depuis un menu » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?