Fermer la fenêtre mère à partir d'un bouton de la fenêtre descendante [Résolu]

Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
- - Dernière réponse : rdjrrado
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
- 22 juil. 2011 à 22:03
bonjour à tous,
(Java application)
j'ai une fenêtre mère x et une fenêtre descendante de ce x appelée y,
je voudrais fermer la fenêtre x à partir d'un bouton de la fenêtre y.
Pourriez vous m'aider sur ce point là?


rado
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
3
Merci
Je te donne un exemple :

public class FenetreY extends JFrame {

    /*On place X dans Y*/
    private JFrame fenetreX;

    public FenetreY(){
        fenetreX = new JFrame();
        fenetreX.setBounds(10, 10, 100, 100);
        fenetreX.setVisible(true);
    }

    public void fermerX(){
        fenetreX.setVisible(false);
    }
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
3
Merci
Bonjour,

Oui, de cette manière, ca ne peut pas marcher, dans la même idée, tu peux faire ca :

Pour classe Y :
public class ClasseY extends JFrame {

    private JFrame fenetreX;

    public ClasseY(JFrame f){
        fenetreX = f;
        fenetreX.setBounds(10, 10, 100, 100);
        fenetreX.setVisible(true);
    }

    public void fermerX(){
        fenetreX.setVisible(false);
    }

    public void setFenetreX(JFrame f){
        fenetreX=f;
    }
}


Pour classeX
public class ClasseX extends JFrame {

    private JFrame fenetreY;

    public ClasseX(JFrame f){
        fenetreY = f;
        fenetreY.setBounds(10, 10, 100, 100);
        fenetreY.setVisible(true);
    }

    public void fermerY(){
        fenetreY.setVisible(false);
    }

    public void setFenetreY(JFrame f){
        fenetreY=f;
    }
}


Et dans ta main :
ClasseX x = new ClasseX(null);
ClasseY y = new ClasseY(null);
x.setFenetreY(y);
y.setFenetreX(x);




Bon, évidament, ca ne fait pas rêver comme solution, mais si tu débutes et que tu ne veux pas faire trop compliqué ca, ca marche. Mais le design pattern observer est fait pour ca normalement.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Julien39
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Pour que tu puisse accéder à la fenêtre x dans la fenêtre y, il faut que cette fenêtre x soit présente dans la fenêtre y ou alors utiliser le design pattern observer.

Si tu es débutante, tu peux te contenter de la première solution.
Commenter la réponse de cs_Julien39
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
Merci pour ta réponse, j vais essayer et je viens pour dire si ça marche ou pas!
merci bcp
cordialement,
rado


rado
Commenter la réponse de rdjrrado
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
ok, après essais: la première solution ne marche pas!
j crois q j vais approcher vers la deuxième!
merci

rado
Commenter la réponse de rdjrrado
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Les deux solutions que je t'ai donné fonctionnent ! Si tu as un problème, poste ton code, je te dirai ce qui ne va pas

Que vas tu essayer : un dp observer ?
Commenter la réponse de cs_Julien39
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
ok voici mon code: j'ai trois classe:

classe main: Main_Class.java
1/---------------------------------
public class Main_Class {


public static void main(String[] args) {

ClasseX lancer=new ClasseX();
}

}
-------------------------------------
la classe de la première fenêtre X: ClasseX.java
2/-----------------------------------
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class ClasseX extends JFrame{


private static final long serialVersionUID = 1L;
JPanel pan_fen_x=new JPanel();
JButton b_fen_x=new JButton("Fen Y");

ClasseX(){
Initialiser();
}

public void Initialiser(){
this.setBounds(10, 10, 500, 200);
this.setVisible(true);
this.setTitle("Fenêtre X");
this.setContentPane(pan_fen_x);
pan_fen_x.setLayout(null);
pan_fen_x.setBackground(Color.WHITE);
pan_fen_x.setLayout(null);

b_fen_x.setBounds(200, 100, 100, 25);
pan_fen_x.add(b_fen_x);

b_fen_x.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
ClasseY classey=new ClasseY();
classey.setVisible(true);

}
});
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){

System.exit(0);
}
});
}

}
--------------------------------------------
La classe de la fenêtre Y: ClasseY.java
3/------------------------------------------
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class ClasseY extends JFrame{


private static final long serialVersionUID = 1L;
private JFrame ClasseX;
JPanel pan_fen_y=new JPanel();
JButton b_fen_y=new JButton("Fermer X");

ClasseY(){
Initialiser();
}

public void Initialiser(){
this.setBounds(10, 10, 200, 200);
this.setVisible(true);
this.setTitle("Fenêtre Y");
this.setContentPane(pan_fen_y);
pan_fen_y.setLayout(null);
pan_fen_y.setBackground(Color.WHITE);

b_fen_y.setBounds(50, 100, 100, 25);
pan_fen_y.add(b_fen_y);;


this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){

dispose();
}
});

b_fen_y.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

ClasseX.dispose();
}

});
}


}
***********************************************
cordialement,
rado
Commenter la réponse de rdjrrado
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Et pour ton code, penses à respecter les normes de codage en java, c'est quand meme plus lisible.

Et la prochaine vois que tu postes du code, n'oublie pas les balises...


Bon courage
Commenter la réponse de cs_Julien39
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
ok,
merci pour votre aide!
Commenter la réponse de rdjrrado
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Va fonctionne (si oui n'oubli pas d'accepter la réponse)
Commenter la réponse de cs_Julien39
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
j suis encore sur le point d reformuler mes classe, mes codes! la réponse sera peut être demain! bonne soirée à tous et merci beaucoup à Julien39
Commenter la réponse de rdjrrado
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
0
Merci
ok, ça marche
merci bcp
Commenter la réponse de rdjrrado