Problème d'appel d'un JPanel avec passage d'argument
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:
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:
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