Bonjour a tous !!

Je planche sur un petit soucis depuis quelques jours et ne trouvant pas de solutions, je m'en remet a vous !!

Alors j'ai une fenetre principale Fenetre() et une fenetre de selection FenetreLoadMap().

FenetreLoadMap() contient un groupe de boutons radio et un bouton OK.
Dans ma fenetre principale, je veux pouvoir récupérer la selection et afficher une carte en conséquence.

Cependant, si FenetreLoadeMap() n'a pas encore été crée, ca plante...Puisqu'il ne peut pas aller chercher les infos dans une fenetre qui n'existe pas !
Je voudrais pouvoir mettre une condition telle que : "si le fenetre n'est pas créer, tu affiche ce messg sinon si elle est crée et que c'est le bouton 1 qui est selectionné tu affiches la carte 1, etc..."

Et je bloque....Je n'y arrive pas....

voici mon code :
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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
 
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//import java.util.*;
import javax.swing.*;
//import javax.swing.JPanel;
import Outils.Constantes;
import Traitement.Reseau;
 
 
 
public class Fenetre extends JFrame implements Constantes, ActionListener{
 
	private JPanel panneau, panneauNord, panneauCentre;
	private JMenuBar barreMenu;
	private JMenu fichier, simulation, parametres;
	private JMenuItem quitter, lancer, arreter, parametrer, selection;
	public JLabel infoAvantSelectionMap, espace, espace1, resumeParam1, resumeParam11, resumeParam2, resumeParam22, resumeParam3, resumeParam33, resumeParam4, resumeParam44, resumeParam5, resumeParam55, resumeParam6, resumeParam66, resumeParam7, resumeParam77, resumeParam8, resumeParam88, resumeParam9, resumeParam99, resumeParam10; //resumeParam4, resumeParam44, resumeParam4, resumeParam44; //résumé des paramètres en cours
	private FenetreParametres2 fenP;
	private FenetreLoadMap fenS;
	private JButton startBtn, stopBtn, statsBtn;
	public boolean initFenP = false, initFenS = false, selectMap = false;
	private String typeFeu;
	Dimension maximumSizePanOuest = new Dimension(200, 50);
	Dimension minimumSizePanCentre = new Dimension(400, 450);
	private String choix;
 
 
	//private JDialog fenP = null;
 
	public Fenetre(Reseau reseau)
	{
		setTitle("LYON MOINS ROUGE");
		setSize(C_FENETRE_LARGEUR, C_FENETRE_HAUTEUR);
 
		Container contenu = getContentPane();
		panneau = new JPanel();
		panneau.setLayout(new BorderLayout());
 
 
//		**************Création de la barre de menu***************
 
		panneauNord = new JPanel(); 
		barreMenu = new JMenuBar();
		setJMenuBar(barreMenu);
 
		//Création du menu Fichier et de ses options
 
		fichier = new JMenu("Fichier");
		barreMenu.add(fichier);
		quitter = new JMenuItem ("Quitter");
		fichier.add(quitter);
		quitter.addActionListener(this);
 
		//Création du menu Simulation
 
		simulation = new JMenu("Simulation");
		barreMenu.add(simulation);
		selection = new JMenuItem ("Sélectionner une carte");
		simulation.add(selection);
		selection.addActionListener(this);
		lancer = new JMenuItem ("Lancer la simulation");
		simulation.add(lancer);
		lancer.addActionListener(this);
		arreter = new JMenuItem ("Arrêter la simulation");
		simulation.add(arreter);
		arreter.addActionListener(this);
 
		//Création du menu Fichier et de ses options
 
		parametres = new JMenu("Paramètres");
		barreMenu.add(parametres);
		parametrer = new JMenuItem ("Parametrer la simulation");
		parametres.add(parametrer);
		parametrer.addActionListener(this);
 
 
 
//**************Création de l'écran gauche***************
 
		//C LA !!!!
		if(getchoix(fenS).equals("map1"))
		{
			panneauCentre = new Panneau(reseau);
		}
		else if(getchoix(fenS)== 2)
		{
 
		}
		else
		{
			panneauCentre = new JPanel();
			panneauCentre.setBackground(Color.lightGray);
			infoAvantSelectionMap = new JLabel("<html>Vous devez choisir une carte pour commencer la simulation<br>Simulation => Sélectionner une carte</html>");
			panneauCentre.add(infoAvantSelectionMap);
		}
 
/*d'autres essais
		if(selectMap == false)
		{
			panneauCentre = new JPanel();
			panneauCentre.setBackground(Color.lightGray);
			infoAvantSelectionMap = new JLabel("<html>Vous devez choisir une carte pour commencer la simulation<br>Simulation => Sélectionner une carte</html>");
			panneauCentre.add(infoAvantSelectionMap);
		}
		else
		//{
			/*if(getchoixMap(fenS).equals("map1"))
			{*/
				//panneauCentre = new Panneau(reseau);
				/*this.repaint();
			}
			else
			{
 
			}
		}*/
 
 
		//Affichage des paramètres de la simulation pour les véhicules
		Box panneauOuest = Box.createVerticalBox();
 
		resumeParam1 = new JLabel("Véhicules normaux : ");
		panneauOuest.add(resumeParam1);
 
		resumeParam11 = new JLabel("",JLabel.CENTER );
		panneauOuest.add(resumeParam11);
 
		resumeParam2 = new JLabel("Véhicules lents : ");
		panneauOuest.add(resumeParam2);
 
		resumeParam22 = new JLabel("",JLabel.CENTER );
		panneauOuest.add(resumeParam22);
 
		resumeParam3 = new JLabel("Gros véhicules : ");
		panneauOuest.add(resumeParam3);
 
		resumeParam33 = new JLabel("",JLabel.CENTER );
		panneauOuest.add(resumeParam33);
 
		resumeParam4 = new JLabel("Véhicules prioritaires : ");
		panneauOuest.add(resumeParam4);
 
		resumeParam44 = new JLabel("",JLabel.CENTER );
		panneauOuest.add(resumeParam44);
 
		// Ajout des paramètres de simul des véhicule dans l'interface
 
 
		//Affichage des paramètre de la simulation pour les feux
 
		panneauOuest.add(Box.createVerticalStrut(20));
 
		resumeParam5 = new JLabel("");
		panneauOuest.add(resumeParam5);
 
		panneauOuest.add(Box.createVerticalStrut(20));
 
		resumeParam55 = new JLabel("");
		panneauOuest.add(resumeParam55);
 
		resumeParam10 = new JLabel("");
		panneauOuest.add(resumeParam10);
 
		resumeParam6 = new JLabel("");
		panneauOuest.add(resumeParam6);
 
		resumeParam66 = new JLabel("");
		panneauOuest.add(resumeParam66);
 
		resumeParam7 = new JLabel("");
		panneauOuest.add(resumeParam7);
 
		resumeParam77 = new JLabel("");
		panneauOuest.add(resumeParam77);
 
		resumeParam8 = new JLabel("");
		panneauOuest.add(resumeParam8);
 
		resumeParam88 = new JLabel("");
		panneauOuest.add(resumeParam88);
 
		resumeParam9 = new JLabel("");
		panneauOuest.add(resumeParam9);
 
		resumeParam99 = new JLabel("");
		panneauOuest.add(resumeParam99);
 
		panneauOuest.add(Box.createVerticalStrut(50));
 
		//Ajout des boutons
		startBtn = new JButton("Start");
		panneauOuest.add(startBtn);
 
		panneauOuest.add(Box.createVerticalStrut(20));
 
		stopBtn = new JButton("Stop");
		panneauOuest.add(stopBtn);
 
		panneauOuest.add(Box.createVerticalStrut(20));
 
		statsBtn = new JButton("Stats");
		panneauOuest.add(statsBtn);
 
		panneauOuest.add(Box.createVerticalGlue());
 
		//Ajout des panneaux dans le panneau principal
 
		panneau.add(panneauOuest,BorderLayout.WEST);
		panneau.add(panneauCentre, BorderLayout.CENTER);
		panneau.add(panneauNord,BorderLayout.NORTH);
 
		contenu.add(panneau);
	}
 
	public void actionPerformed(ActionEvent e)
	{
		Object source = e.getSource();
 
		this.addWindowListener(new WindowAdapter(){//si on la ferme par la croix, on la cache
			public void windowClosing(WindowEvent event) {
				System.exit(0);
			}
		});
 
		if(source == selection)
		{
			if(initFenS == false) //Si la fenetre n'existe pas on la créé
			{
				fenS = new FenetreLoadMap(this);
				initFenS = true; //La fenetre est créée
				fenS.setLocationRelativeTo(this);
				fenS.setVisible(true);//Afficher
 
			}
 
			else//Si elle est déjà créée, on l'affiche simplement
			{
				fenS.setVisible(true);
			}
			selectMap = true;
			choix = getchoix(fenS);
		}
		if(source == quitter)
		{
			System.exit(0);
		}
		if(source == parametrer)
		{
 
			if(initFenP == false) //Si la fenetre n'existe pas on la créé
			{
				fenP=new FenetreParametres2();
				initFenP = true; //La fenetre est créée
				fenP.setLocationRelativeTo(this);
				fenP.pack();
				fenP.setVisible(true);//Afficher
 
			}
 
			else//Si elle est déjà créée, on l'affiche simplement
			{
				fenP.setVisible(true);
			}
 
			fenP.addMouseListener(new MouseAdapter() {
				public void mouseExited(MouseEvent event) {
					miseAJourParametres(fenP);
				}
			});
 
			fenP.addWindowListener(new WindowAdapter(){//si on la ferme par la croix, on la cache
				public void windowClosing(WindowEvent event) {
					miseAJourParametres(fenP);
					fenP.setVisible(false);
				}
			});
			}
	}
 
	public String gettypeFeu(FenetreParametres2 fenP)
	{
		return(fenP.typeFeu);
	}
 
	public String getchoix(FenetreLoadMap fenS)
	{
		return(fenS.choix);
	}
 
	public void miseAJourParametres(FenetreParametres2 fenP)
		{
			typeFeu = gettypeFeu(fenP);
			resumeParam11.setText(fenP.getnbVehiculeNormaux());
			resumeParam22.setText(fenP.getnbVehiculeLent());
			resumeParam33.setText(fenP.getnbVehiculeGros());
			resumeParam44.setText(fenP.getnbVehiculePrioritaire());
			if(typeFeu == "fSimple")
			{
				resumeParam5.setText("<html>Feu à temporisation<br>simple et constante</html>");
				resumeParam55.setText("Tempo : " + fenP.gettempoFSimple() + " s");
				resumeParam66.setText("");
				resumeParam77.setText("");
				resumeParam88.setText("");
				resumeParam99.setText("");
			}
			else if(typeFeu == "fConstant")
			{
				resumeParam5.setText("<html>Feu à temporisation<br>synchronisée et<br>constante</html>");
				resumeParam55.setText("Tempo : " + fenP.gettempoFConstant() + " s");
				resumeParam66.setText("");
				resumeParam77.setText("");
				resumeParam88.setText("");
				resumeParam99.setText("");
			}
			else if(typeFeu == "fSyncSemiConstant")
			{
				resumeParam5.setText("<html>Feu à temporisation<br>synchronisée<br>semi-constante</html>");
				resumeParam55.setText("");
				resumeParam66.setText("   Tempo Ruelle : " + fenP.gettempoFSyncSemiConstantRuelle() + " s");
				resumeParam77.setText("   Tempo Route : " + fenP.gettempoFSyncSemiConstantRoute() + " s");
				resumeParam88.setText("   Tempo Avenue : " + fenP.gettempoFSyncSemiConstantAvenue() + " s");
				resumeParam99.setText("   Tempo Boulev : " + fenP.gettempoFSyncSemiConstantBoulevard() + " s");
			}
			else if(typeFeu == "fNSyncSemiConstant")
			{
				resumeParam5.setText("<html>Feu à temporisation<br>non synchronisée<br>semi-constante</html>");
				resumeParam55.setText("");
				resumeParam66.setText("   Tempo Ruelle : " + fenP.gettempoFNSyncSemiConstantRuelle() + " s");
				resumeParam77.setText("   Tempo Route : " + fenP.gettempoFNSyncSemiConstantRoute() + " s");
				resumeParam88.setText("   Tempo Avenue : " + fenP.gettempoFNSyncSemiConstantAvenue() + " s");
				resumeParam99.setText("   Tempo Boulev : " + fenP.gettempoFNSyncSemiConstantBoulevard() + " s");
 
			}
			if(typeFeu == "fDynamique")
			{
				resumeParam5.setText("<html>Feu à temporisation<br>dynamiquement<br>variable</html>");
				resumeParam55.setText("");
				resumeParam66.setText("");
				resumeParam77.setText("");
				resumeParam88.setText("");
				resumeParam99.setText("");
 
			}
		}
 
 
	public JPanel getFPanneau() {return panneauCentre;}	
}
FentreLoadMap :

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
 
 
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.CheckboxGroup;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
 
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
import Outils.Constantes;
 
public class FenetreLoadMap extends JDialog implements Constantes, ActionListener, ItemListener{
 
	private JPanel panneau, panneauNord, panneauCentre, panneauSud;
	private JLabel titre;
	private JButton okB;
	private CheckboxGroup selectionMap;
	private Checkbox map1; //première carte
	private Checkbox map2; //deuxième carte
	public String choix;
	//public boolean affFen = false;//passe a true quand la fenetre est affichée
	public Fenetre fenPrincipale;
 
	public FenetreLoadMap(Fenetre fenetre)
	{
		setTitle("Sélection de la carte");
		setSize(300,200);
 
		Container contenu = getContentPane();
 
		fenPrincipale = fenetre;
		panneau = new JPanel();
		panneau.setLayout(new BorderLayout());
		panneauNord = new JPanel();
		panneauCentre = new JPanel();
		panneauSud = new JPanel();
		GridLayout layout = new GridLayout(6,2,10,4);// ligne, colonnes
		panneauCentre.setLayout(layout);
 
		//Bouton OK
 
		okB = new JButton("OK");
		okB.addActionListener(this);
 
		//Paramètres véhicules
 
		titre = new JLabel("Choisissez une carte : ");
 
	    selectionMap = new CheckboxGroup();
	    map1 = new Checkbox("Carte Générique",selectionMap,true);
	    map2 = new Checkbox("Carte Quartier Ville de Lyon",selectionMap,false);
 
	    map1.addItemListener(this);
	    map2.addItemListener(this);
	    //Ajout dans les panneaux : Libellé et donnée au centre ; bouton au sud
	    panneauNord.add(titre);
	    panneauCentre.add(map1);
	    panneauCentre.add(map2);
	    panneauSud.add(okB);
 
		//Ajout des panneau nord et sud dans le panneau à leurs emplacements respectifs
 
		panneau.add(panneauNord, BorderLayout.NORTH);
		panneau.add(panneauCentre,BorderLayout.CENTER );
		panneau.add(panneauSud,BorderLayout.SOUTH );
 
		//Ajout dans le container
		contenu.add(panneau);
 
 
 
	}
 
	public void actionPerformed(ActionEvent e)
	{
		Object source = e.getSource();
		if(source == okB)
		{
					this.setVisible(false);//Cache la fenetre
					fenPrincipale.repaint();
 
		}
	}
 
	public void itemStateChanged(ItemEvent arg0) {
		Object source = arg0.getSource();
		if(source == map1)
		{
			choix = "map1";
		}
		if(source == map2)
		{
			choix = "map2";
		}
 
	}
}
Le truc en fait, c'est que lorsque je clic sur OK dasn FenetreLoadMap, il faudrait que je repaint() la fenetre principale. Et la, il faut que je sache si FentreLoadMap a été crée pour savoir si je peux aller chercher des paramètres dedans.....

C pas très facile a expliquer...
J'espère que vous comprndrez et que vous pourrez m'aider !!

En tout cas MERCI D'AVANCE D'ESSAYER DE ME SORTIR DE CETTE IMPASSE !!!

Deb