Controle la fermeture d'un JPanel [Résolu]

Signaler
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009
-
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009
-
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

Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
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
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
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
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

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
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
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
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

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
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
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
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

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.


 
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
97
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
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

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
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

merci pour ton aide
Messages postés
99
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
16 avril 2009

Un grand merci, ça marche impeccable!!!