Bonjour,

Je bosse actuellement sur un moteur de jeu, et j'aimerais pouvoir ouvrir une fenêtre qui me permette de choisir un fichier sauvegardé en XML et le charger.

J'ai donc créé une classe qui me permet de voir les fichiers xml dans un dossier donné, et d'en sélectionner un ou pas.

Lorsque je lançais ma fenêtre seule, en lui donnant un nom de dossier, tout se passait bien.

Seulement voilà, lorsque je l'appelle depuis mon moteur, elle bloque, n'affiche rien et ne veut même plus se fermer

La classe de la fenêtre de chargement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.net.*;
 
class ChargPerso
{
 
	String[] listeSauv = new String[0];
 
	public String choix;
 
 
	//éléments graphiques
	public JFrame frame = new JFrame();
 
	JList liste;
	JButton btnNouvellePartie;
	JButton btnCharger;
	JButton btnAnnuler;
 
	public String repSauv;
	ActionListener action;
 
	public ChargPerso(String chemin)
	{
		repSauv=chemin;
 
		action = (new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				String bouton=e.getActionCommand();
				if(bouton.equals("Annuler"))
				{
					choix="annul";
				}
				else if(bouton.equals("Charger"))
				{
					choix=(String)liste.getSelectedValue();
					if(choix==null)
					{
						if((dialogue("Aucune sauvegarde sélectionnée\nVoulez-vous commencer une nouvelle partie ?",""))==JOptionPane.YES_OPTION)choix="null";
					}
				}
				else if(bouton.equals("Nouvelle Partie"))
				{
					choix="null";
				}
			}
		});
 
		initComponents();
 
	}
 
 
 
 
	public void initComponents()
	{
		Container conteneur = frame.getContentPane();
 
		//déclaration des JPanel
		JPanel txtPanel = new JPanel();
		JPanel listPanel = new JPanel();
		JPanel btnPanel = new JPanel();
 
		//Container conteneurBtn = btnPanel.getContentPane();
 
		//ajout du texte
		txtPanel.add(new JLabel("Selectionnez une Sauvegarde"));
 
		//ajout du bouton Lancer
		configureBouton("Nouvelle Partie", btnPanel, btnNouvellePartie);
		configureBouton("Charger", btnPanel, btnCharger);
		configureBouton("Annuler", btnPanel, btnAnnuler);
 
 
		//ajout de la liste
		recupSauv(new File(repSauv));
		liste = new JList(listeSauv);
		liste.setFixedCellWidth(300);//largeur des lignes fixée à 300
		liste.setSelectionMode(0);//on ne peut sélectionner qu'un seul élément à la fois
		listPanel.add(liste);
 
 
 
		conteneur.setLayout(new BorderLayout(5,5));
		conteneur.add(txtPanel, BorderLayout.NORTH);
		conteneur.add(listPanel, BorderLayout.CENTER);
		conteneur.add(btnPanel, BorderLayout.SOUTH);
 
 
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(true);
		frame.pack();
		frame.setLocationRelativeTo(frame.getParent());//centre la fenêtre à la écran
		frame.setVisible(true);
 
	}//fin initComponents()
 
 
	public void configureBouton(String s, JPanel panel,JButton bouton)
	{
		bouton = new JButton(s);
		bouton.setActionCommand(s);
		bouton.addActionListener(action);
		panel.add(bouton);
	}
 
 
	//recupère la liste des fichiers finissants par l'extension
	//.xml dans le répertoire passé en paramètre
	public void recupSauv(File repertoire)
	{
		String [] listeFichiers;
		String ext=new String(".xml");
		int i;
		int nombreFichiers=0;
		int j=0;
		listeFichiers=repertoire.list();
 
 
		//on compte le nombre de fois où on a un fichier qui fini par l'extension ext
		for(i=0;i<listeFichiers.length;i++)
		{
			if(listeFichiers[i].endsWith(ext)==true)
			{
				nombreFichiers++;
			}
		}
 
		listeSauv= new String [nombreFichiers];
 
		//on récupère la liste de fichiers qui finissent pas l'extension ext
		for(i=0;i<listeFichiers.length;i++)
		{
			if(listeFichiers[i].endsWith(ext)==true)
			{
				listeSauv[j]=listeFichiers[i];
				j++;
			}
		}
	}//fin recupJeux()
 
 
	/**
         * Ouvre une boite de dialogue avec option OUI/NON
         * avec comme titre de fenêtre le String titre
         * et comme texte affiché le String message
         */
	public int dialogue(String message, String titre)
	{
		return JOptionPane.showConfirmDialog(frame,message,titre,JOptionPane.YES_NO_OPTION);
	}//fin dialogue()
 
}
la fonction qui l'appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
	public void chargementSauv()
	{
		pause=true;
		ChargPerso charg = new ChargPerso(jeu.cheminDossier+jeu.repSauv);
		String sauv=null;
 
		//on fait une pause de 0.1 seconde pour laiser le temps à la fenêtre de s'initialiser
		try{
		Thread.sleep(1000);
		}catch(Exception ex){ex.printStackTrace();}
 
		while(sauv==null)
		{
			//pour ne pas que la boucle soit trop rapide
			try{
				Thread.sleep(100);
			}catch(Exception ex){ex.printStackTrace();}
 
			sauv=charg.choix;
		}
 
		//clic sur nouvelle partie
		if(sauv.equals("null"))
		{
			pPerso=jeu.persoDefaut;
			chargementPerso();
			charg.frame.dispose();
			affichage();
		}
 
		//clic sur annuler
		else if(sauv.equals("annul"))
		{
			charg.frame.dispose();
		}
 
		//un fichier à charger a été choisi
		else
		{
			decodagePerso(jeu.cheminDossier+jeu.repSauv+sauv);
			chargementPerso();
			charg.frame.dispose();
			affichage();
		}
		pause=false;
	}
Que faire ?
Merci pour toute réponse !