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

Signaler
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
-
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011
-
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

12 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
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);
    }
}
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
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.
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
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.
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

Merci pour ta réponse, j vais essayer et je viens pour dire si ça marche ou pas!
merci bcp
cordialement,
rado


rado
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

ok, après essais: la première solution ne marche pas!
j crois q j vais approcher vers la deuxième!
merci

rado
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
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 ?
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

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
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
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
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

ok,
merci pour votre aide!
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
294
Va fonctionne (si oui n'oubli pas d'accepter la réponse)
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

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
Messages postés
8
Date d'inscription
vendredi 20 juillet 2007
Statut
Membre
Dernière intervention
29 juillet 2011

ok, ça marche
merci bcp