Problème fermeture JFrame

Résolu
H4rDBuG Messages postés 47 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 26 juillet 2011 - 20 juil. 2011 à 10:37
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 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) ?

6 réponses

H4rDBuG Messages postés 47 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 26 juillet 2011
20 juil. 2011 à 11:45
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 ;)
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
20 juil. 2011 à 10:44
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 ?
0
H4rDBuG Messages postés 47 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 26 juillet 2011
20 juil. 2011 à 10:54
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 ...
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
20 juil. 2011 à 11:26
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 ?
0

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

Posez votre question
H4rDBuG Messages postés 47 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 26 juillet 2011
20 juil. 2011 à 11:36
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 ;)
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
20 juil. 2011 à 11:54
De rien.

Bon courage pour la suite
0
Rejoignez-nous