Bonjour à tous,
J'ai un problème récurrent que je n'arrive pas à régler, et c'est très ennuyeux.
Alors en fait il s'agit d'une applet initialement composé de 5 JPanel positionnés avec un BorderLayout.
Sur le panneau ouest se trouvent un JTextField et deux JButton (SIMULATION, et ACCUEIL).
Mon problème est le suivant:
Je souhaiterais lors d'un clic sur le bouton Simulation enlever le panneau initialement au centre et le remplacer pour un nouveau panneau que l'on appellera panneau_Sim.Et chose importante ce panneau aura comme argument la valeur du JTextField!!
Je souhaiterais lors d'un clic enlever le panneau_Sim alors lancer et revenir au panneau initial.
Et surtout une fois le Panneau_Sim mise en place, dès que l'utilisateur change la valeur du JTextField et clic sur SIMULATION, que en quelque sort ça rafraichisse le panneau simulation.
J'ai réussi à faire interchanger les panneaux sans le passage de valeur du JTextField comme ceci:
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 public class appletLaser extends JApplet { //appel des classes panneaux panneaunord pn= new panneaunord(); panneausud ps= new panneausud(); panneauouest po= new panneauouest(); panneauest pe= new panneauest(); panneaucentre pc= new panneaucentre(); panneauCentralResultat ax = new panneauCentralResultat(); public void init(){ setSize(800, 600); //taille de l'applet setLayout(new BorderLayout());//utilisation du gestionnaire border //On ajoute nos panneaux add(ps, BorderLayout.SOUTH); add(pe, BorderLayout.EAST); add(po, BorderLayout.WEST); add(pn, BorderLayout.NORTH); add(pc, BorderLayout.CENTER); po.jb2.addActionListener(new ActionListener() //on ajoute un action listener sur le Bouton du panneau OUEST {public void actionPerformed(ActionEvent evt) { remove(pc); add(ax, BorderLayout.CENTER); validate(); } }); po.jb3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) { remove(ax); add(pc, BorderLayout.CENTER); validate(); } }); }
En fait j'utilise remove() pour enlever le panneau présent et le remplacer.
Seulement si je fait le rafraichissement je suis bien obligé d'appeler la classe panneau_Sim dans le actionListener.
Or le remove le détruit directe.
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 po.jb2.addActionListener(new ActionListener() //on ajoute un action listener sur le Bouton du panneau OUEST {public void actionPerformed(ActionEvent evt) { panneauCentralResultat ax = new panneauCentralResultat(po.jtf.getValue());//ici on appel la classe panneau_Sim remove(pc); remove(ax);//ici j'essaie d'enlever l'existente mais ça me supprime la nouvelle et non pas l'ancienne. add(ax, BorderLayout.CENTER); validate(); } }); ); }
Merci d'avance
Partager