[JAVA] fermer une Jdialog

Résolu
le tanard -  
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai programmé une applet dans laquelle je lance une JDialog.
Mon probleme, c'est que je n'arrive pas à fermer correctement cette JDialog.

J'ai essayé maJDialog.dispose(), mais le problème c'est que je ne peux pas relancer ce JDialog quand je quitte l'applet, puis que je reviens dessus.

Je ne veux pas utliser systeme.exit, parce qu'a la sortie du JDialog, j'ai encore besoin d'utiliser mon applet.

Qu'est ce que vous me conseillez ?

Merci
A voir également:

9 réponses

maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Bonjour.

Pourquoi veux tu fermer ta JDialog? Le garbage collector s'en occupera. Ton seul problème à mon avis est de faire en sorte qu'il soit visible ou non. Et en général, l'utilisateur en cliquant sur "close" le fait!

1
le tanard
 
Bonne idée mais...
Si je la cache, et que je veux y retourner après, il va m'en ouvrir une nouvelle non? Or je veux garder la précédente, avec toutes les modifications que j'ai pu y apporter.

Je ne veux pas en ouvrir plusieurs occurences, mais la "rouvrir" si elle a déjà été ouverte. C'est possible ce genre de choses? Comment détecter si elle a déjà été ouverte ou non?

Merci pour ton aide
1
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
ben voilà ! :-)
1
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Alors... il faut garder ta variable quelque part! A priori ce serait une variable privée de ton applet.
En fait, au moment ou tu crées ta JDialog (avec le new), il faut que tu ai une variable de type JDialog qui y sera égal que tu ajouteras par la suite à ton applet!

Peux tu mettre le code de la création de ta jdialog et l'endroit ou tu l'ajoutes dans ton applet silteplé?
0

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

Posez votre question
le tanard
 
Voila mon code épuré des trucs qui n'ont rien a voir avec le problème :

Pour le lancement, je fais un appel de la fonction InitialisationIntervenants dans l'applet :
public void actionPerformed(ActionEvent e) {
        if (e.getSource() instanceof JMenuItem) {
            
             if (ChoixMenus.equals("Intervenants..."))
                new InitialisationIntervenants ();


Et voila la classe ou est definie la fonction :

public class InitialisationIntervenants extends JDialog {
    
     JDialog Cadre = new JDialog();
     JButton Sortie = new JButton("Sortie");
    
    public InitialisationIntervenants() {
       
        JPanel BackGround = new JPanel();
        
        //Boutons
         
                    BackGround.add(Sortie);
                    
                    Sortie.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                           Cadre.dispose();}
                           } );
                    
                    //Tracage des tableaux
                    Cadre.setContentPane(BackGround);
                    Cadre.setSize(widthFenetre, heightFenetre);
                    Cadre.setLocation((widthScreen - widthFenetre) / 2, (heightScreen - heightFenetre) / 2);
                    
                    //Affichage du cadre
                    Cadre.show(); }
    
}


je crois qu'il dois y avoir tout ce qu'il faut.
0
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
Rapidement, un conseil, je regarde après plus attentivement:

Les new, fais les dans le constructeur et la première lettre des variables en miniscule:

JDialog cadre = null;
     JButton sortie = null;
    
    public InitialisationIntervenants() {
       
         JPanel backGround = new JPanel();
         cadre = new JDialog();
         sortie = new JButton("Sortie");
         ...



Ensuite, une question. Qu'entends tu par tu n'arrives pas à fermer correctement ta jdialog. Qu'aimerais tu exactement faire? Qu'est ce qu'il se passe quand tu essayes de fermer? Avec quel bouton de jdialog tu essayes de le faire?
0
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
Salut

pour n'utiliser qu'un occurence d'une instance d'un objet, il faut utiliser le "singleton pattern"

http://radio.weblogs.com/0122027/stories/2003/10/20/implementingTheSingletonPatternInJava.html

in french ?

http://smeric.developpez.com/java/uml/singleton/



0
le tanard
 
Merci !

C'est impec, maintenant ca fonctionne comme je le veux.

Merci à tous les deux pour le temps que vous m'avez consacré
0
maily Messages postés 7556 Date d'inscription   Statut Contributeur Dernière intervention   453
 
:)
0