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 :

Fermer une JFrame dans une classe interne


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut Fermer une JFrame dans une classe interne
    Bonjour,

    J'aimerais savoir comment fermer une JFrame grâce à une classe interne ?

    Je m'explique, j'ai fait une JMenuBar qui ne contient pour le moment que des bêtes menus, dont un bouton "Exit" et donc, je souhaite pouvoir fermer cette JFrame en cliquant sur le bouton Exit.

    Le problème est que j'utilise un ActionListener sur ce bouton, que j'implémente dans une classe interne.

    Du coup, impossible de récupérer la JFrame elle-même pour faire un bête dipose() par exemple.

    Est-il alors possible de faire cela ? Ou dois-je utiliser une autre technique ?

    Mon code : (ne contient que les infos principales)
    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
    public class MainFrame extends JFrame
    {
            private JMenuBar menuBar = new JMenuBar();
        private JMenu file = new JMenu("File"); 
        private JMenu tools = new JMenu("Tools");
        private JMenuItem exit = new JMenuItem("Exit"); 
        private JMenuItem sort = new JMenuItem("Sort"); 
     
        public MainFrame()
        {
    /*Set the MenuBar and components*/
            file.add(exit); 
            tools.add(sort); 
            menuBar.add(file); 
            menuBar.add(tools);
            this.setJMenuBar(menuBar);
     
            exit.addActionListener(new ExitListener()); 
     
            }    
     
    // [TODO] : Comment fermer juste la Frame dans une classe ?
        class ExitListener implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        }
    }
    J'espère que tout est compréhensible. Si non, n'hésitez pas à me poser des questions.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par Mornor Voir le message
    Est-il alors possible de faire cela ? Ou dois-je utiliser une autre technique ?
    Mornor
    Bonjour, je te propose ceci, à la place d'utiliser une classe interne utilises plutôt une classe externe. Donc tu crées une classe par exemple Fermer qui implémente ActionListener, tu passes un JFrame en paramètre de son constructeur, et tu effectueras la fermeture de ta JFrame sur celle que tu as passée en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Fermer implements ActionListener{
    JFrame fen=null;
    //son constructeur
    public Fermer (JFrame f){
    this.fen=f;
    }
    @override
    public void actionPerfomed(ActionEvent e){
    This.fen.dispose();
    }
    }
    Rien de plus simple restant à faire, tu instancies ta classe Fermer dans le addActionListener en lui passant la JFrame active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exit.addActionListener(new Fermer(this));
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,

    Tu dois utiliser un écouteur spécifique a ton JMenuItem

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private JMenuItem exit = new JMenuItem("Exit"); 
    exit.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                     dispose();
                }
            });
    De cette manière tu n'a pas a déclarer de innerClass et tu te trouves directement dans ta JFrame. De ce fait tu peux directement utiliser les méthode associées.


    Cdt.

  4. #4
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    tu peux accéder aux membres de la classe englobante en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MainFrame.this.dispose();
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Points : 57
    Points
    57
    Par défaut
    Merci pour ces 3 réponses toutes plus intéressantes les une que les autres !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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