IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

problème avec la fermeture d'une frame


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut problème avec la fermeture d'une frame
    Bonjour tt le monde

    J’ai un tout petit problème je vous explique

    J’ai créer deux frames (j’utilise Jbuilder comme environnement de développement)

    Il y a un bouton dans la première frame qui m’ouvre la deuxième la tt marche bien et j’ai met un bouton dans la deuxième frame dans le but que kan je click sur lui la deuxième fram doit ce fermé j’ai utiliser l’instruction suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void jButton1_actionPerformed(ActionEvent e) {
            //System.exit(0);
            Frame2 framet = new Frame2();
            framet.hide();
        }
    Mais sa marche pas il n y a aucune erreur généré mais la fram2 ne ce ferme pas

    Qlq 1 a une idée pourquoi ???

    Merci vraiment pour votre aide

    Bonne jurée

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Citation Envoyé par kaninama
    public void jButton1_actionPerformed(ActionEvent e) {
    //System.exit(0);
    Frame2 framet = new Frame2();
    framet.hide();
    }
    Il semble que là tu caches seulement la fenêtre que tu viens de créer par l'instruction new Frame2(). Ce n'est certainement pas la fenêtre que tu vois à l'écran. Pour fermer la bonne fenêtre il faut que tu saches quelle variable dans ton code désigne cette bonne fenêtre, et l'utiliser.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    salut

    j'ai eu un pb similaire, (voir mon post "bouton quitter et fermeture d'une des fenetre")
    mais moi j'ai utilisé (en suivant les conseils!! ) le frame.dispose()
    j'sais pas si ça repond a ta question...!!!

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par gifffftane
    Il semble que là tu caches seulement la fenêtre que tu viens de créer par l'instruction new Frame2(). Ce n'est certainement pas la fenêtre que tu vois à l'écran. Pour fermer la bonne fenêtre il faut que tu saches quelle variable dans ton code désigne cette bonne fenêtre, et l'utiliser.

    merci pour ta réponse gifffftane
    oui je vois et t'as raison j'ai pas fais attention a sa

    mais cette variable qui désigne la nouvelle frame existe dans le code de l'autre frame et elle n'est pas public dans pas de moyen pour l'appeler

    voila le code qui exist dans la frame1

    public void jButton17_actionPerformed(ActionEvent e) {
    Frame2 framet = new Frame2();
    framet.show();
    }
    et cette framet n'est pas reconu dans la frame2

    la je suis pérdu

    merci pour votre réponse

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    merci chloep je vais l'essyer et te rendre la réponse

    merci encore une fois

  6. #6
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Les méthodes show et hide sont deprecated... http://java.sun.com/javase/6/docs/ap...ow.html#show()

    Utilise setVisible(boolean) a la place

    Pour ton histoire de frame, il te faut récupérer la variable framet... Pour ce faire, t'as pas 36 solutions : soit tu mets cet attribut en public, soit tu ajoutes un accesseur (plus propre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public JFrame getFramet(){
       return framet;
    }
    et tu fais ensuite, dans ton autre frame, un maFrame1.getFramet().setVisible(false);

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Claythest
    Les méthodes show et hide sont deprecated... http://java.sun.com/javase/6/docs/ap...ow.html#show()

    Utilise setVisible(boolean) a la place

    Pour ton histoire de frame, il te faut récupérer la variable framet... Pour ce faire, t'as pas 36 solutions : soit tu mets cet attribut en public, soit tu ajoutes un accesseur (plus propre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public JFrame getFramet(){
       return framet;
    }
    et tu fais ensuite, dans ton autre frame, un maFrame1.getFramet().setVisible(false);

    merci pour ta réponse mais ça marche pas

    Pour ta première solution c’est de déclarer ma variable public ça marche pas

    Et dans ta deuxième solution c’est d’utiliser une méthode qui me retourne ma frame c’est le même problème qui ce pose elle ne reconnais pas la variable framet

    merci kan meme

  8. #8
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    montre le code de tes 2 frame s'il te plaît

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Claythest
    montre le code de tes 2 frame s'il te plaît
    Bien sur
    Pour la 1 frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public class Frame1 extends JFrame {
     
    public Frame1()
     {
            Try
                  {
     
                   setDefaultCloseOperation(EXIT_ON_CLOSE);
                    jbInit();
                    }
     catch (Exception exception)
            {
                    exception.printStackTrace();
            }
    private void jbInit() throws Exception 
    {
     
            contentPane = (JPanel) getContentPane()
                    ///////////////////tout un tralala 
    }
      }
     
    ////des lignes de code 
     
     
      public void j button7_actionPerformed(ActionEvent e) {
            Frame2 framet = new Frame2();
            framet.show();
     
     
        }
     
    }]
    // la c’est ma première frame

    Pour la deuxième frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Frame2 extends JFrame
    {
    public Frame2() {
            try {
                       jbInit();
                  } catch (Exception exception) {
                exception.printStackTrace();
            }
    private void jbInit() throws Exception 
    {//////tt un tralala d’initialisation 
    }
    //// des lignes de code 
    public void jButton1_actionPerformed(ActionEvent e) {
            //System.exit(0);
    
    //c’est ici qu’on doit fermer la frame 
        }
        }
    
    
    }]

    voila les deux frame

    merci

  10. #10
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Que veux tu faire exactement ? Tu veux que la deuxième frame se ferme ? Si c'est ça, c'est très simple, fais un this.hide() (ou setVisible(false) plutot, puisque deprecated).

    Si tu veux fermer ta premiere frame, il faut que tu conserves un lien de ta frame1 dans ta frame2 (en la passant en parametre du constructeur de frame2 par exemple...).

    En tout cas, de ce que je vois, ce n'est nullement un problème de Swing, mais plutot un problème de programmation en général... Tu n'as pas bien saisi ce qu'était une variable...

    Bonne chance

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Cette discussion peut peut-être être utile car elle est liée au même problème :

    https://www.developpez.net/forums/showthread.php?t=297499

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Que veux tu faire exactement ? Tu veux que la deuxième frame se ferme ? Si c'est ça, c'est très simple, fais un this.hide() (ou setVisible(false) plutot, puisque deprecated).
    oui c'est exactement ça et merci pour ton aide car avec this.hide ça marche est c'est tellement bête que j'ai hante la

    mais j'ai essayer avec setVisible(false) ça marche pas et je me demande pourquoi (ça me donne envi de faire qlq recherche)

    En tout cas, de ce que je vois, ce n'est nullement un problème de Swing, mais plutôt un problème de programmation en général... Tu n'as pas bien saisi ce qu'était une variable...
    non je sais exactement c'est quoi une variable ce que je ne sais pas c'est comment transmettre cette variable

    merci a toi aussi mitch 007

    donc la solution c'été juste de mettre this.hide()

    merci a vous et bonne journée tt le monde

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    je peu essayer de te developper un peu plus mon code pour t'aider.. car je sais pas si mon post est tres comprehensible hors context!!

    j'ai une 1ere frame avec 1 bouton ki m'ouvre 1 fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    .....
    bouton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    AfficheFenetre nouvelleFenetre = new AfficheFenetre();
    nouvelleFenetre.Affiche();}});
    .....
    dans ma frame AfficheFenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    JFrame frame = new JFrame();
    .....
    bouton2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    frame.dispose();}});
     
    ....
    public void Affiche(){
    frame.setContentPane(contenuFenetre);
    frame.setSize(950,450);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(...);
    }
    j'espere que cela va pouvoir te donner des idées pour ton prog
    perso j'suis pas une spécialiste, et mon prog n'est p'etre l'ideal...

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par chloep
    je peu essayer de te developper un peu plus mon code pour t'aider.. car je sais pas si mon post est tres comprehensible hors context!!

    j'ai une 1ere frame avec 1 bouton ki m'ouvre 1 fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    .....
    bouton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    AfficheFenetre nouvelleFenetre = new AfficheFenetre();
    nouvelleFenetre.Affiche();}});
    .....
    dans ma frame AfficheFenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    JFrame frame = new JFrame();
    .....
    bouton2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
    frame.dispose();}});
     
    ....
    public void Affiche(){
    frame.setContentPane(contenuFenetre);
    frame.setSize(950,450);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(...);
    }
    j'espere que cela va pouvoir te donner des idées pour ton prog
    perso j'suis pas une spécialiste, et mon prog n'est p'etre l'ideal...
    merci chloep et bonne journée a toi

  15. #15
    Membre confirmé Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Points : 554
    Points
    554
    Par défaut
    Citation Envoyé par kaninama
    mais j'ai essayer avec setVisible(false) ça marche pas et je me demande pourquoi (ça me donne envi de faire qlq recherche)

    Si le "ca ne marche pas" veut dire une erreur de compilation du genre "unknown method", cela doit signifier que tu développes en Java 1.4 ou inférieur (puisque sur le lien que je donne plus haut, on peut lire que show est deprecated depuis la version 1.5 - "Deprecated. As of JDK version 1.5, replaced by setVisible(boolean).").

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 57
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Claythest
    Si le "ca ne marche pas" veut dire une erreur de compilation du genre "unknown method", cela doit signifier que tu développes en Java 1.4 ou inférieur (puisque sur le lien que je donne plus haut, on peut lire que show est deprecated depuis la version 1.5 - "Deprecated. As of JDK version 1.5, replaced by setVisible(boolean).").

    ah non c'été juste une petite erreur qui cosé que sa ne marché pas mais la tte est rentrer dans l'ordre merci beaucoup a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/03/2010, 19h13
  2. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22
  3. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  4. Problèmes avec un TWebBrowser dans une DLL
    Par bellamyjc dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/01/2005, 22h35
  5. Problème avec un LIKE dans une procédure stockée
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/12/2004, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo