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 :

Classe pour arréter le programme


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    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 : 21
    Points
    21
    Par défaut Classe pour arréter le programme
    Bonjour,

    J'ai créé le début de la vue d'un programme et on me demande de créer une classe qui me permet de fermer l'application si on ferme la fenêtre. Ma vue fonctionne mais je ne sais pas comment faire pour créer une classe qui arrétera le programme.

    J'ai alors tenté de faire

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;

    class WindowAdapter extends JFrame
    {
    //--Le constructeur
    WindowAdapter()
    {
    //Ajout de l'écouteur de fenêtre
    addWindowListener(
    new WindowAdapter(){
    public void windowClosing(WindowEvent e) {System.exit(0);}
    });
    }
    }
    Mais je reçois cette erreur

    WindowAdapter.java:11: addWindowListener(java.awt.event.WindowListener) in java.awt.Window cannot be applied to (<anonymous WindowAdapter>)
    Comment spécifier au windowAdapter sur quelle classe il doit s'executer? Merci

  2. #2
    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
    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
     import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    class WindowAdapter extends JFrame
    {
    //--Le constructeur
    WindowAdapter()
    {
    //Ajout de l'écouteur de fenêtre
    addWindowListener(
    new WindowAdapter(){
    public void windowClosing(WindowEvent e) {System.exit(0);}
    });
    }
    }
    Tu as tout mélangé

    Change le nom de ta classe ainsi :

    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
     import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    class PasWindowAdapter extends JFrame
    {
    //--Le constructeur
    PasWindowAdapter ()
    {
    //Ajout de l'écouteur de fenêtre
    addWindowListener(
    new WindowAdapter(){
    public void windowClosing(WindowEvent e) {System.exit(0);}
    });
    }
    }
    .. . et ça devrait fonctionner... Sinon, tu avais créé un masquage de la classe WindowAdapter que tu souhaitais en fait utiliser...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import javax.swing.JFrame;
     
    public class MaClasse extends JFrame
    {
          ...
          this.setDefaultOperationOnClose( JFrame.EXIT_ON_CLOSE );
          ...
    }
    le moyen de plus facile de terminer ton programme quand on clic sur fermer

  4. #4
    Membre à l'essai
    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 : 21
    Points
    21
    Par défaut
    Voilà, j'ai fais

    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
       import java.awt.*;
       import javax.swing.*;
       import java.awt.event.*;
     
        class FermerProgramme extends JFrame
       {
       //--Le constructeur
           FermerProgramme()
          {
          //Ajout de l'écouteur de fenêtre
             addWindowListener(
                    new WindowAdapter(){
                       public void windowClosing(WindowEvent e) {System.exit(0);}
                   });
          }
       }
    Maintenant j'aimerais pouvoir m'en servir dans une autre classe mais je ne sais pas comment procéder. Injecter "FermerProgramme();" semble ne pas fonctionner:

    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
       import java.awt.*;
       import javax.swing.*;
       import java.awt.event.*;
     
        class VueDuJeu extends JFrame
       {
       //--Le constructeur
           VueDuJeu()
          {
          		//Paramètre de la fenêtre
             setSize(500, 500);
             setTitle("Fenetre");
             	//Affichage de la fenêtre
             FermerProgramme(); // ne fonctionne pas =(
             setVisible(true);
          }
       }

  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 TiLs1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    import javax.swing.JFrame;
     
    public class MaClasse extends JFrame
    {
          ...
          this.setDefaultOperationOnClose( JFrame.EXIT_ON_CLOSE );
          ...
    }
    le moyen de plus facile de terminer ton programme quand on clic sur fermer
    La meilleure solution est celle-ci

    Tu l'appelles sur tes 2 JFrames, et le tour est joué

  6. #6
    Membre à l'essai
    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 : 21
    Points
    21
    Par défaut
    J'ai tenté

    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
       import java.awt.*;
       import javax.swing.*;
       import java.awt.event.*;
     
        public class FermerProgramme extends JFrame
       {
       //--Le constructeur
           FermerProgramme()
          {
             this.setDefaultOperationOnClose( JFrame.EXIT_ON_CLOSE );
          //Ajout de l'écouteur de fenêtre
             addWindowListener(
                    new WindowAdapter(){
                       public void windowClosing(WindowEvent e) {System.exit(0);}
                   });
          }
     
       }
    Mais je reçois l'erreur
    FermerProgramme.java:10: cannot find symbol
    symbol : method setDefaultOperationOnClose(int)
    location: class FermerProgramme
    this.setDefaultOperationOnClose( JFrame.EXIT_ON_CLOSE );
    ^
    1 error
    Je suis désolé mais je suis vraiment une truite en Java
    Dans mon énoncé on me dit de créer une classe qui spécialise WindowAdapter et permet de fermer l'application si on ferme la fenêtre. Aussi je ne sais pas comment faire pour appeller mes 2 JFrame.

    Merci encore et escusez ma noobitude

  7. #7
    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 pigeonus
    Je suis désolé mais je suis vraiment une truite en Java
    Dans mon énoncé on me dit de créer une classe qui spécialise WindowAdapter et permet de fermer l'application si on ferme la fenêtre. Aussi je ne sais pas comment faire pour appeller mes 2 JFrame.

    Merci encore et escusez ma noobitude
    Il te faut donc écrire une classe qui hérite ("extends") WindowAdapater dans laquelle tu redéfinis la méthode windowClosing.

    Ensuite, tu crées tes 2 classes pour tes 2JFrame, et dans chacunes d'elles tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.addWindowListener(monObjetHéritantDeWindowAdapter);
    Alors, les évènements de fenêtres seront centralisés et gérés dans ta classe héritant de WindowAdapter...

  8. #8
    Membre à l'essai
    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 : 21
    Points
    21
    Par défaut
    Le problème c'est que j'ai déjà un extends dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class FermerProgramme extends JFrame
    Et si j'utilise "implements" ça ne fonctionne pas non plus.

  9. #9
    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 Claythest
    Il te faut donc écrire une classe qui hérite ("extends") WindowAdapater [...]

    Ensuite, tu crées tes 2 classes pour tes 2JFrame,[...]
    Ca te fera donc 3 classes à la fin...

  10. #10
    Membre à l'essai
    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 : 21
    Points
    21
    Par défaut
    Très bien, merci Claythest et désolé d'avoir abusé de ta gentilesse. Je débute Java et c'est vraiment pas évident tout ça.

    Bonne soirée et toi (et merci aussi à TiLs1 )

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    ah oui effectivement, je me suis trompé :p
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

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

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. CTRL - C automatique pour arrêter un programme sous Shell ?
    Par excalybur dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/12/2014, 21h32
  3. Réponses: 7
    Dernier message: 02/09/2008, 10h07
  4. Réponses: 6
    Dernier message: 14/02/2008, 12h02
  5. Programme pour Arrêter le PC
    Par nnizarr2010 dans le forum C
    Réponses: 5
    Dernier message: 12/09/2007, 19h52

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