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 :

Action à la fermeture d'une JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut Action à la fermeture d'une JFrame
    Alors voila, j aimerais programmer moi meme une action à la fermeture d'une JFrame.. Il me semble que l'interface WindowListener est dedié a ce genre de choses mais je ne sais po vraiment l'utiliser.
    Si vous pouviez me montrer un exemple d'apllication ce serait sympo...
    Merki et ++

  2. #2
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    C'est ça, il faut implémenter l'interface WindowListener ou étendre la classe WindowAdapter.

    WindowAdapter est une classe abstraite implémentant l'interface WindowListener en fournissant un bloc vide pour chacune des méthodes. L'avantage de WindowAdapter est donc que tu n'es pas obligé d'implémenter toutes les méthodes de WindowListener mais uniquement celles qui t'intéressent.

    Tu peux définir ton écouteur dans une classe séparée qui implémentera WindowListener (ou étendra WindowAdapter) que tu appliquera à ta fenêtre via la méthode addWindowListener de JFrame.

    Tu peux aussi définir ton écouteur directement dans ta classe courante, en implémentant l'interface (dans ce cas tu fera addWindowListener(this) pour ajouter l'écouteur) ou alors à la volée à l'aide d'une classe interne anonyme (pour moi c'est le plus simple). Mon exemple illustrera ce dernier cas de figure.

    Exemple : Affichage d'une boîte de dialogue pour confirmer que l'on veut quitter l'application (si tu clique sur oui tu ferme la fenêtre, si tu clique sur non, la fenêtre reste affichée).

    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
     
    public class WindowListenerTest{
      public static void main (String[] args){
        //création d'une JFrame de test
        final JFrame taJFrame = new JFrame("Test WindowListener");
        taJFrame.setSize(300, 300);
        taJFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_CLOSE);
        //Ca s'est pour éviter que la fenêtre se ferme même si on clique sur "Non"
     
        //Définition de l'écouteur à l'aide d'une classe interne anonyme
        taJFrame.addWindowListener(new WindowAdapter(){
                 public void windowClosing(WindowEvent e){
                       int reponse = JOptionpane.showConfirmDialog(taJFrame,
                                            "Voulez-vous quitter l'application",
                                            "Confirmation",
                                            JOptionPane.YES_NO_OPTION,
                                            JOptionPane.QUESTION_MESSAGE);
                       if (reponse==JoptionPane.YES_OPTION){
                               taJFrame.dispose();
                       }
                 }
        });
        taJFrame.setVisible(true);
      }
    }
    Voilà, j'espère que ça pourra t'aider.

    Si tu as d'autres questions n'hésite pas.

    Note : la JFrame est déclarée final pour pouvoir être utilisée dans la classe interne anonyme.

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  3. #3
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Merci bien, je vais tester ca...

  4. #4
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Alors la je n y comprends rien. Pour precision, j aimerais que qd l utilisateur ferme la fenetre, le JCheckBoxMenuItem associé se décoche. Voici mon code:

    Calc.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    ((JCheckBoxMenuItem) (JMB.getMenu(2).getItem(1))).setState(false);
    Calc.dispose();
    }

    });
    avec Calc la frame en question.
    Le truc incomprehensible c qu avec getItem(2) ca marche ss prob, mais pour le 1er et le troisieme il m'envoit ce message d'erreur:

    java.lang.NullPointerException
    at test2.Main$1.windowClosing(Main.java:54)
    at java.awt.Window.processWindowEvent(Window.java:1121)
    at javax.swing.JFrame.processWindowEvent(JFrame.java:266)
    at java.awt.Window.processEvent(Window.java:1079)
    at java.awt.Component.dispatchEventImpl(Component.java:3615)
    at java.awt.Container.dispatchEventImpl(Container.java:1627)
    at java.awt.Window.dispatchEventImpl(Window.java:1606)
    at java.awt.Component.dispatchEvent(Component.java:3477)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

    Ce qui est vraiment troublant c que mes ces trois frames sont codés de la mm maniere et les JMenuItem les appellant aussi.
    Si z avez une idée sur la source du pb je suis a votre ecoute...
    Merci encore et ++

  5. #5
    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 Heimdal
    java.lang.NullPointerException
    T'aurais pas oublié de faire un new quelque part ?

  6. #6
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    C bon j ai pu resoudre le pb.... En fait je ne mettais pas les bons parametres ds la methode getItem(int)... Je ne savais po que les separateurs(addSeparator()) comptait comme un item....
    C ds ce genre de situation que j adore le JAVA .
    Merci encore pour votre aide.
    See U later

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

Discussions similaires

  1. Attendre la fermeture d'une JFrame
    Par davinout dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 15/01/2007, 18h29
  2. redefinition du procédé de fermeture d'une jFrame
    Par delma dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/11/2006, 15h50
  3. [resolulu][SWING] action avant de fermer une JFrame
    Par berg dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 17/06/2006, 23h15
  4. [JOptionPane] Confirmation de la Fermeture d'une JFrame
    Par e1lauren dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/01/2006, 18h40
  5. Exécuter une action à la fermeture d'une fenêtre
    Par wwave dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 28/07/2005, 15h15

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