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

Agents de placement/Fenêtres Java Discussion :

Apeller close de JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut Apeller close de JFrame
    Salut à tous,
    ma JFrame a un windowListener qui lui est associé, je surcharge la methode:
    windowClosing pour effectuer certaines choses nécessaires avant de fermer l'application.

    Maintenant le but est d'entrer dans cette methode windowClosing en passant par l'item EXIT de mon menuPrincipal. Et là je ne vois pas trop comment faire ...

    Un dispose() n'arrange certainement pas l'affaire ... il faudrait simuler le click sur la croix ou alt-f4? je sais pas trop... ca me semble bourrin comme methode

    Merci de m'aider

  2. #2
    Membre chevronné 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
    Par défaut
    Citation Envoyé par Bardack
    Maintenant le but est d'entrer dans cette methode windowClosing en passant par l'item EXIT de mon menuPrincipal.
    Non la manière la plus propre est d'ajouter une méthode qui effectue la fermeture, et de l'appeler dans ton windowClosing ainsi que lors de toute action devant fermer ta fenetre

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Mmm voui mais dans windowClosing donc j' apelle la methode que je définis: close();

    Mais dans le action de l'item EXIT, j' apelle close, mais je dois ensuite fermer ma fenetre .
    J' en conclus donc un appel de : dispose(); dans la methode close...

    Quand je ferme la fenetre avec la croix, pas de probleme ... manquerait plus que ca .

    Par contre en passant par l'item, ca close bien mais ca kill pas l'appli.

    J ai regarder les methodes disponibles ... mais j' en vois pas qui close vraiment l'appli ... pourrait on m en dire + ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    a part ajouter dans ma methode close un : System.exit(0); je vois pas

    Mais ca me semble assez sauvage quand meme ...

  5. #5
    Membre chevronné 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
    Par défaut
    Tu enleves le "setDefaultClosingOperation(EXIT_ON_CLOSE)" (ou similaire) et tu mets un "System.exit(0)" dans ta méthode close()... Si je ne m'abuse, c'est ce que fait le EXIT_ON_CLOSE...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Par défaut
    Ah bon, ca me semble pourtant tellement laid ...

    Surement un de mes nombreux flash
    Merci de ta réponse

  7. #7
    Invité de passage
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 1
    Par défaut
    utilise cette commande au lieu de dispose()
    processWindowEvent( new WindowEvent( this, WindowEvent.WINDOW_CLOSING) );

    ca devrais produir l'effet que vous souhaitez

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut Traitements avant fermeture application
    Salut,

    Si j'ai bien compris, ton soucis est de pouvoir gérer des traitements avant fermeture de ton application (Alt + F4, ou autres méthodes)

    Par défaut le DefaultCloseOperation est à HIDE_ON_CLOSE, c'est à dire que ta fenêtre disparaît mais ton programme est toujours actif.

    Alors lorsque l'on souhaite quitter l'application on passe sur un EXIT_ON_CLOSE, qui génère un appel à System.exit();

    Dans ton cas, voici ce qui est préconisé

    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
     
    JFrame f = new JFrame("Test");
    f.setSize(200,200);
    f.setVisible(true);
    //Les actions Close seront desactivés
    f.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
     
    //On ajoute un listener de fenêtre et on implémente la function WindowClosing
    f.addWindowListener(new WindowListener(){
     
    public void windowClosing(WindowEvent arg0) {
            //Ici on demande la confirmation de fermeture de l'application
    	int reponse = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter ?", "Confirmation", JOptionPane.YES_NO_OPTION);
    	if (reponse == JOptionPane.YES_OPTION){
                    //Sauvegarde des données et autres traitements                
                    this.writeConfInFile();
                    //Quit l'application
    		System.exit(0);
    	}
    }
    Dans cet exemple on confirme seulement la fermeture de l'application, mais on peut très bien imaginé (comme dans un éditeur de fichier), qu'il vérifie l'état des fichiers et si un n'est pas enregistré, qu'il propose l'enregistrement

    Pour la partie Item Fichier -> Quitter, tu déporte simplement le code du windowsEvent dans une méthode et tu l'appelles suite a ton Evènement de click, malheureusement on ne peux pas avoir accès directement à l'action qui est lancé par le "Exit" de la JFrame.

    Par contre comme le souligne bcoprescu, tu peux passer par l'instruction
    processWindowEvent( new WindowEvent( this, WindowEvent.WINDOW_CLOSING) );

    Ensuite c'est à toi de voir si ton code de fermeture doit être placé dans le WindowListener, ou dans un controlleur partagé entre ton WindowListener et ton ActionListener de menu

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

Discussions similaires

  1. Méthode close() Jframe
    Par bruno_nono dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 26/04/2010, 16h02
  2. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 18h57
  3. Utilisation de x.close et set x=nothing
    Par kayser dans le forum ASP
    Réponses: 3
    Dernier message: 05/12/2003, 09h49
  4. Faire une JFrame avec LookAndFeel
    Par aburner dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 03/12/2003, 09h54
  5. Réponses: 8
    Dernier message: 21/11/2003, 19h38

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