Fermer JFrame à partir d'un JPanel en static..?

ehochedez Messages postés 9 Date d'inscription samedi 22 août 2009 Statut Membre Dernière intervention 3 septembre 2009 - 23 août 2009 à 12:59
lechiconeur Messages postés 11 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 26 octobre 2009 - 25 oct. 2009 à 23:40
J'ai une application avec plusieurs fenetres.
Chaque fenetre est composée de 3 JPanels dont 2 sont en Static puisqu'ils sont communs à toutes les fenetres.
Sur l'un des panels en static je souhaiterais mettre un bouton "Menu" pour retourner à la fenetre principale de l'application. Je mets donc un

bouton.addActionListener qui envoie sur une methode GoMenu().
Mon probleme, je ne sais pas comment fermer la fenetre courante quand on clique sur le bouton puisque le bouton est dans un JPanel static d'une fenetre et qu'il n'appartient donc à aucune fenêtre.

Le code sera certainement un peu plus parlant..

Classe ClasseFenetre, toutes les fenetres de mon application sont héritées de cette classe
-------------------------------------------------------------------------
public abstract class ClasseFenetre extends JFrame{

protected JPanel container = new JPanel();
protected static North north = new North();
protected JPanel middle = new JPanel();
protected static South south = new South();

ClasseFenetre(){

this.setSize(1280, 770);
this.setResizable(true);
this.setAlwaysOnTop(true);
this.setUndecorated(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);

container.setLayout(new BorderLayout());
container.add(north, BorderLayout.NORTH);
container.add(middle, BorderLayout.CENTER);
container.add(south, BorderLayout.SOUTH);

this.setContentPane(container);
}
}
-------------------------------------------------------------------------






Classe du static JPanel North present dans toutes les fenetres de l'application ou je veux que se trouve mon bouton "MENU"
-------------------------------------------------------------------------
public class North extends JPanel{

public North(){
this.setBackground(Color.red);
this.setPreferredSize(new Dimension(1280, 40));
Buttons boutonMenu = new Buttons(new ImageIcon("images/menu.jpg"),"menu");
boutonMenu.setPreferredSize(new Dimension(150, 30));
boutonMenu.addActionListener(new GoMenu());
this.add(boutonMenu);
}

class GoMenu implements ActionListener{
public void actionPerformed(ActionEvent e) {
Page_Principale pagePrincipale = new Page_Principale();
dispose();
}
}
}
-------------------------------------------------------------------------



Une fenetre de mon application nommée Profils
-------------------------------------------------------------------------
public class Profils extends ClasseFenetre {

public Profils(){
this.setTitle("Profils");
middle.add(new JLabel("Fenetre Profils"));
this.setVisible(true);
}
}
-------------------------------------------------------------------------



Donc dans cette fenetre Profils on a bien les 3 parties qui s'affichent, notamment la partie haute avec le bouton MENU, la partie du milieu avec "Fenetre profils" d'écrit et la partie du bas. Mais je ne sais pas comment faire, quand on clique sur le bouton MENU pour fermer la fenetre courante et me diriger vers la fenetre Page_Principale.

Auriez vous une idée?

J'essaie de me servir de
SwingUtilities.windowForComponent(this).dispose();
mais je ne parviens pas à le faire marche

1 réponse

lechiconeur Messages postés 11 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 26 octobre 2009 2
25 oct. 2009 à 23:40
Essaye ceci:
import java.awt.Window;
...
window = SwingUtilities.windowForComponent((Component)e.getSource());
window.dispose();

fred
2
Rejoignez-nous