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 :

Problème fermer fenêtre avec dispose()


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Problème fermer fenêtre avec dispose()
    Bonjour,

    J'ai un problème pour fermer la fenêtre dans laquelle je suis...
    Le main crée une fenêtre de type cadre, et ensuite je viens créer par dessus une autre fenêtre de type fenAide, qui ne peut bien entendu pas être fermée avec System.exit(0)... La méthode dispose() renvoie le message d'erreur
    Cannot make a static reference to the non-static method dispose() from the type Window
    J'ai vraiment besoin d'un bouton, car la fenêtre va être Undecorated...

    Pouvez-vous m'aider ?
    Merci d'avance

    (Je n'ai copié que le début du code)

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class jeu
        {
        public static void main(String[]arg)
            {
            cadre nc=new cadre();
            }
        }
     
    class fenAide extends JFrame
        {
        public fenAide(String etesVS)
            {
            setVisible(true);
            setTitle("Bienvenue dans la rubrique d'aide");
            setBounds(150,150,400,300);
            setResizable(false);
            getContentPane().add(new panConfirm(etesVS));        
            }
        }
     
    class panConfirm extends JPanel
        {
        private JLabel messConfirm=new JLabel("");
        private JButton okConf=new JButton("Ok");
     
        public panConfirm(String messConf)
            {
            add(messConfirm);
            messConfirm.setText("Etes vous sûr de vouloir "+messConf+" ?");
            add(okConf);
            okConf.addActionListener(new EcouteurConf());
            }
     
        class EcouteurConf implements ActionListener
            {
            public void actionPerformed(ActionEvent evt)
                {
                fenAide.dispose();
                }
            }
        }

  2. #2
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Tu veux faire fenAide.dispose();.
    Le problème c'est que dispose() n'est pas une méthode static. Pour l'appeler il faut utiliser un référence de fenAide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fenAide frame = new fenAide();
    frame.dispose();//La ça marche
    Bref, dans ton cas il faut que tu passe la référence de ta fenetre à ton panel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getContentPane().add(new panConfirm(etesVS, this));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     private fenAide f;
    public panConfirm(String messConf, fenAide f){//Constructeur de panConfirm
            this.f = f;
            ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPerformed(ActionEvent evt)
                {
                f.dispose();
                }

    ps : Penses au règle de nommage : les classes commence par une "Majuscule"

  3. #3
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    aussi, c'est setVisible(false) qui cache la fenetre. Faire un dispose sur une fenetre visible n'a aucun effet.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup, ça marche
    Par contre en essayant directement setVisible(false) la console renvoie la même erreur que le dispose()...

    Pour les classes je pensais que celles qui en étendaient d'autres restaient en minuscules, je vais corriger ça

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

Discussions similaires

  1. Problème fermeture fenêtre (frame.dispose())
    Par Yokooo dans le forum Débuter
    Réponses: 8
    Dernier message: 30/08/2009, 11h24
  2. Réponses: 6
    Dernier message: 17/11/2006, 17h40
  3. Problème d'ouverture de fenêtre avec ie6.
    Par volontier dans le forum IE
    Réponses: 2
    Dernier message: 11/10/2006, 15h16
  4. fermer fentre avec message
    Par allowen dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/03/2006, 13h57
  5. Fermer fenêtre avec le handle
    Par ni0urk dans le forum MFC
    Réponses: 10
    Dernier message: 24/11/2005, 08h43

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