Problème fermeture JFrame [Résolu]

Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
26 juillet 2011
- - Dernière réponse : cs_Julien39
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 20 juil. 2011 à 11:54
Bonjour a tous,

Je reviens vers vous avec un ultime problème. Voilà, j'ai sur mon application, un bouton qui permet d'ouvrir une fenêtre contenant une JFrame, JFrame qui est remplit par des données SQL. Quand je lance l'application pour la première fois et que j'ouvre la fenêtre en question, aucun problème, la JFrame est remplit normalement. Il suffit que je ferme cette fenêtre et que je la ré-ouvre après pour constater qu'elle est remplit en double ...

Le problème vient donc du fait que quand je ferme la JFrame, elle ne se "détruit" pas, elle reste "invisible" en quelque sorte, j'ai cherché mais je ne trouve pas de méthodes adéquates.

J'ai utilisé :
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);


Mais la JFrame n'est pas détruite, elle reste en mémoire ...

J'au aussi utilisé :
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


Mais là, c'est toute l'application qui se ferme, ce n'est pas ce que je cherche ...

Auriez-vous une idée sur comment "détruire" la fenêtre ou encore vider la JFrame à la fermeture (par dispose ou close) ?
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
26 juillet 2011
3
Merci
C'est bon, il a juste fallut que je déclare mon ArrayList au début de la classe, et que je fasse l'initialisation dans la méthode getAll(), de façon a la vider et a la remplir juste après ;)

Merci beaucoup pour le p'tit coup de pouce qui permet de regarder dans al bonne direction ;)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de H4rDBuG
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
Bonjour,

Je ne comprends pas vraiment ce qui se passe, su tu fais à chaque fois un new JFrame(), les données ne peuvent pas êtres conservées. Peux tu nous donner un morceau de code pour qu'on voit le problème ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
26 juillet 2011
0
Merci
Bonjour Julien39 et merci de ta rapidité.

Voila le code de ma classe pour la JFrame :

package gestionintendance;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.IOException;
import javax.swing.*;
import javax.swing.table.*;

public class tabCategorie
{
    static String[] titreColonnes = {"NomCategorie"}; 
    
    public tabCategorie(Object[][] donnees, String[] titreColonnes,String titre)
    {
JFrame frame = new JFrame(titre);
                
DefaultTableModel model = new DefaultTableModel(donnees,titreColonnes);
final JTable jt = new JTable(model);
        
        jt.getColumnModel().getColumn(0).setPreferredWidth(200);
        
        JButton print = new JButton("Imprimer");
        
        print.addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent evt) 
            {
                try 
                {                
                    jt.print();
                } 
                catch (PrinterException ex) 
                {
                    System.out.println(ex.getMessage());
                    System.out.println(ex);
                }
            }
});
        
        JButton export = new JButton("Exporter vers excel");
        
        export.addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent evt) 
            {
                try 
                {                
                    String user = System.getProperty("user.name");
                    ExcelExporter exp = new ExcelExporter(); 
                    exp.exportTable(jt, new File("C:/Users/"+user+"/Desktop/fiche-categorie.xls"));
                } 
                catch (IOException ex) 
                {
                    System.out.println(ex.getMessage());
                    System.out.println(ex);
                }
            }
});
        
        JPanel pan = new JPanel();
JScrollPane pane = new JScrollPane(jt,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        pane.setPreferredSize(new Dimension(200,300));
        pan.add(pane);
        pan.add(print);
        pan.add(export);
frame.add(pan);
frame.pack();
        frame.setLocationRelativeTo(null);
frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}


et voila comment j'appelle cette classe dans mon ihm principale :

tabCategorie t = new tabCategorie(Categorie.getCategorie(Categorie.getAll()),tabCategorie.titreColonnes,"Consultation des categories");


Je recréé bien une nouvelle JFrame oui, mais pour je ne sais quelle raison elle n'est pas détruite à la fermeture ...
Commenter la réponse de H4rDBuG
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
et si avant de recréer ta fenêtre tu affiches Categorie.getCategorie(Categorie.getAll()) : qu'obtiens tu ? Les données en double ou bien les bonnes données ?
Commenter la réponse de cs_Julien39
Messages postés
47
Date d'inscription
jeudi 14 janvier 2010
Statut
Membre
Dernière intervention
26 juillet 2011
0
Merci
Effectivement, j'ai ajouté :

System.out.println(Categorie.getCategorie(Categorie.getAll()));

Juste avant l'instanciation du JFrame, et la le tableau est directement remplit en double, il ne l'est pas quand la ligne est commentée ... le problème vient bien du fait que mon ArrayList ne se vide pas ... Je test et je redis ;)
Commenter la réponse de H4rDBuG
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
240
0
Merci
De rien.

Bon courage pour la suite
Commenter la réponse de cs_Julien39