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 :

WindowClosingEvent comment l'envoyer?


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut WindowClosingEvent comment l'envoyer?
    Bonjour,

    J'ai une fenêtre principale d'où j'affiche un autre dialogue qui contient un bouton "Fermer"... et j'essaie de gérer la fermeture de ma fenêtre avec un WindowListener..
    final Diagram frame = new Diagram(); // create diagram window

    frame.setSize(600, 600);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setModal(true);
    frame.addWindowListener
    (
    new WindowAdapter()
    {
    @Override
    public void windowClosing(WindowEvent e)
    {
    frame.dispose();
    System.gc();
    }
    }
    );
    Donc cela marche très bien lorsque je clique sur le "X" de mon dialog..
    J'aimerais par contre lorsque je clique sur mon bouton "Fermer", je puisse récupérer l'évènement de fermeture, or je n'ai rien trouver sur le net...??

    En résumé j'aimerais recevoir l'évènement de fermeture du dialogue lorsque je clique sur mon bouton "Fermer". Donc j'aimerais savoir comment envoyer un évènement de fermeture....?

    Merci

  2. #2
    Membre expérimenté Avatar de DarkMolo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    207
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Juillet 2006
    Messages : 207
    Par défaut
    Salut,

    Ca ne va pas répond à ta demande , mais tu peux facilement faire l'inverse, tu relies ton traitement au clic du bouton(ActionListener -> actionPerformed), et pour la fermeture de la fenêtre, elle ne ferait appel qu'au clic de ce même bouton qui contient déjà le traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    frame.addWindowListener(
      new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
          monBoutonFermer.doClick();
        }
      }
    );

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Merci bien, j'y avais penser et je m'apprêtais à le faire mais j'ai finalement réussi à trouver comment "pusher" l'évènement de fermeture!

    /**
    * Dispose of About frame
    * @param e Event performed
    */
    @Override
    public void actionPerformed(ActionEvent e)
    {
    // push WindowClosingEvent on queue
    WindowEvent windowClosingEvent = new WindowEvent(this, WindowEvent.WINDOW_CLOSING);
    getToolkit().getSystemEventQueue().postEvent(windowClosingEvent);
    }
    Merci de ta réponse.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Pour fermer une fenêtre il suffit de faire un frame.setVisible(false); pas la peine de "pousser" un event sur la pile. Si t'as du code de fermeture complexe, il faut le mettre dans uné methode que ton windowsadapter et ton actionPerformed appellent tous les deux. Un code bidouillant la pile d'events ne va faire qu'être lourd et difficile à suivre pour une personne qui ne le connait pas.

    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
    new WindowAdapter()
    {
      @Override
      public void windowClosing(WindowEvent e)
      {
        fermerFenetre();
      }
    }
    public void actionPerformed(ActionEvent e)
    {
        fermerFenetre();
    } 
    private void fermerFenetre(){
        frame.close();
        frame.dispose();
    }
    Quand au System.gc() tu peux le retirer. Ne jamais appeler le gc soit même. Au mieux ca ne fera rien. Au pire ca va plomber tes performances.

Discussions similaires

  1. Clic droit. Comment subdiviser "Envoyer vers documents"?
    Par midiweb dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 24/07/2006, 00h05
  2. Réponses: 35
    Dernier message: 18/05/2006, 18h30
  3. TDBLookuplistbox comment l'envoyer sur la ligne voulue?
    Par pacs dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/03/2005, 08h46
  4. [MAIL] comment en envoyer depuis une servlet ?
    Par outreal dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 09/07/2004, 11h17

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