Controle la fermeture d'un JPanel

Résolu
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009 - 9 mars 2007 à 09:02
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009 - 9 mars 2007 à 12:43
Bonjour à tous,
j'aurai voulu savoir s'il était possible de contrôler la fermeture d'un JPanel.
Lorsque l'utilisateur clique sur la croix rouge (en haut à droite), je voudrai afficher un JOptionPane qui demande s'il est sur de vouloir quitter.
Merci d'avance
Coordialement

11 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 mars 2007 à 12:33
Salut,

oki je comprend mieux en fait tu mélange les adapter et les interfaces ... voici la version de ton cde corrigé :

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;

public class NewJFrame extends javax.swing.JFrame {

    public static void main(String[] args) {
        NewJFrame inst = new NewJFrame();
        inst.setVisible(true);
    }

    public NewJFrame() {
        super();
        initGUI();
    }

    private void initGUI() {
        try {

            this.setDefaultCloseOperation(WindowConstants. DO_NOTHING_ON_CLOSE);
            this.addWindowListener( new WindowAdapter() {
                    public void windowClosing(WindowEvent e) {
                        int ret = JOptionPane.showConfirmDialog(NewJFrame.this, "Etes-vous sur de vouloir quitter l'application?",
                                "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                        if(ret == JOptionPane.YES_OPTION)
                            System.exit(0);
                    }
            });
            pack();
            setSize(400, 300);
            setLocationRelativeTo(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
   }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 mars 2007 à 09:21
Salut,

tu ne contrôle pas la fermeture d'un panel mais d'une fenêtre. et tu peux lui affecter un WindowListener (pour plus d'info il y a des exemples sur le forum et quelques un dans les sources).

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 10:10
public





void

windowClosing(WindowEvent evt) {JOptionPane.showMessageDialog(



null

,

"Etes-vous sur de vouloir quitter l'application?"
);}

j'ai suivi ton conseil. Apparemment, pour controler la fermeture de la fenetre, il faut passer par windowClosing
Pourtant, mon bout de code ci-dessus ne marche pas, le JOptionPane ne s'affiche pas
merci d'avance
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 mars 2007 à 10:29
Salut,

tiens :

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Test extends JFrame implements WindowListener{
    private static final long    serialVersionUID    = 1802199483736051124L;

    public Test(){
        super("Test");
        setSize(300, 300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);//important
        addWindowListener(this);
    }
   
    public static void main(String[] args) {
        new Test().setVisible(true);
    }
   
    public void windowClosing(WindowEvent e) {
        int ret = JOptionPane.showConfirmDialog(this, "Etes-vous sur de vouloir quitter l'application?",
                "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
        if(ret == JOptionPane.YES_OPTION)
            System.exit(0);
    }

    public void windowActivated(WindowEvent e) { }
    public void windowClosed(WindowEvent e) { }
    public void windowDeactivated(WindowEvent e) { }
    public void windowDeiconified(WindowEvent e) { }
    public void windowIconified(WindowEvent e) { }
    public void windowOpened(WindowEvent e) { }
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 11:02
je te remercie pour ce bout de code.
j'avais trouvé pourquoi ça n'aller pas, j'avais oublier de mettre implements WindowListener.
maintenant ça marche sauf que j'ai un message d'erreur :
   the type NewJFrame must implement the inherited abstract method WindowListener.windowClosed(WindowEvent)

WindowListener.?????
les ???? change : il y  ala meme erreur pour windowsIconified(WindowEvent), ....
merci d'avance
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 mars 2007 à 11:21
Salut,

comme pour toutes interfaces il faut implémenter TOUTES les méthodes de celle-ci soit pour ton cas :

public void windowClosing(WindowEvent e) {...}
public void windowActivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowOpened(WindowEvent e) { }

dans l'exemple ci-dessus je ne les ai pas misent pour décorer ;)

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 11:29
je me doute que c'est pas fait pour décorer!!!


mais je les ai rajouté pourtant et ça ne change rien. C'est pas trop grave puisque que l'application tourne mais je voulais juste savoir s'il existait pas une solution pour qu'il n'y est plus d'erreur.


 
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
9 mars 2007 à 11:50
Salut,

tu as bien mis les imports ?

import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

au pire colle le code que je puisse voir ce qui cloche

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 11:57
import




java.awt.event.WindowAdapter;



import

java.awt.event.WindowEvent;



import

java.awt.event.WindowListener;



import

javax.swing.JOptionPane;



import

javax.swing.WindowConstants;





public








class

NewJFrame


extends

javax.swing.JFrame


implements

WindowListener{


/**






*



Auto
-
generated



main



method



to



display



this



JFrame






*/







public





static





void

main(String[] args) {   NewJFrame inst =



new

NewJFrame();
   inst.setVisible(


true

);   }



   public

NewJFrame() {



   super

();
   initGUI();   
   }



   private





void

initGUI() {



   try

{            {



               this

.setDefaultCloseOperation(WindowConstants.


DO_NOTHING_ON_CLOSE

)
            }   {



      this

.addWindowListener(


new

WindowAdapter() {



   public





void

windowDeactivated(WindowEvent evt) {   }



   public





void

windowActivated(WindowEvent evt) {   }



   public





void

windowOpened(WindowEvent evt) {   }



   public





void

windowClosed(WindowEvent evt) {   }



   public





void

windowDeiconified(WindowEvent evt) {   }



   public





void

windowIconified(WindowEvent evt) {   }



   public





void

windowClosing(WindowEvent evt) {      JOptionPane.showMessageDialog(



null

,

"Etes-vous sur de vouloir quitter l'application !!!"
);   }

   });

   }

   pack();
   setSize(400, 300);
   setLocationRelativeTo(



null

);   }



catch

(Exception e) {   e.printStackTrace();

   }

   }}

j'ai bien mis les imports
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 11:58
merci pour ton aide
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
9 mars 2007 à 12:43
Un grand merci, ça marche impeccable!!!


 
0
Rejoignez-nous