Changer de JPanel sans ouvrir une nouvelle fenêtre
cs_akarui
Messages postés3Date d'inscriptionsamedi 9 octobre 2010StatutMembreDernière intervention16 octobre 2010
-
15 oct. 2010 à 16:36
cs_akarui
Messages postés3Date d'inscriptionsamedi 9 octobre 2010StatutMembreDernière intervention16 octobre 2010
-
16 oct. 2010 à 18:34
Bonjour, je suis dans une école d'ingénieur et pour un projet info je dois faire un programme en Java, mais nos profs d'info ne nous ont pas vraiment appris grand chose alors je ne connais même pas les bases. ^^ Je cherche à, à l'aide d'un bouton pouvoir changer de Jpanel, dans la même fenêtre. Je sais qu'il existe sur ce site (et ailleurs) des tutos très bien expliqués pour cela, mais les profs nous ont appris a afficher des fenêtres et des JPanel d'une façon plutôt spécial, et je comprend rien à toutes les explications que je trouve sur internet.
un dessin vaut mieux qu'un long discours, voici le modèle de mon programme :
public class Test
{
public static void main (String[]arg)
{
cadre nc= new cadre("panneau essai", 100, 200, 500, 300);
}
}
class cadre extends JFrame
{
public cadre(String nom, int X, int Y, int L, int H)
{
super(nom);
setBounds(X, Y, L, H);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(new panneau1());
setVisible(true);
setResizable(false);
}
}
class panneau1 extends JPanel
{
private JButton b= new JButton("changer de panneau");
public panneau1()
{
b.addActionListener(new Ecouteur1());
add(b);
}
class Ecouteur1 implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
???
}
}
}
class panneau2 extends JPanel
{
...
}
Voila, donc je chercher a savoir ce que je pourrait mettre dans la classe écouteur 1 pour afficher le contenu du panneau2 lorsqu'on appuie sur le bouton b. Si vous pouviez m'expliquer comment faire en utilisant la méthode de mes profs, ce serait génial.
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020371 16 oct. 2010 à 07:19
pour changer le panel courant de ta JFrame il suffit de faire comme ca :
JFrame f = new JFrame();
f.setContentPane(new JPanel());
f.setVisible(true);
f.setContentPane(new JPanel());
f.repaint();
Le problème c'est que tu ne peux pas dire que tu remplaces un panneau 1 par une panneau 2 dans la classe qui définit ton panneau 1.
Pour t'en sortir, tu as deux solutions, soit tu mets en attribut de la classe panneau1 la JFrame à modifier soit tu mets le code directement dans la JFrame.
Si dans la classe Panneau1 tu mets une JFrame en attribut :
public class Panneau1 extends JPanel{
private JFrame f;
private JButton b= new JButton("changer de panneau");
//... Tu écris ton code
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
f.setContentPane(new Panneau2());
f.repaint();
}
});
cs_akarui
Messages postés3Date d'inscriptionsamedi 9 octobre 2010StatutMembreDernière intervention16 octobre 2010 16 oct. 2010 à 15:08
ok, merci beaucoup je vais essayer d'utiliser ça. Le problème tu vois, c'est que nos profs d'info ne nous ont jamais rien expliqué, alors j'ai un peu du mal a comprendre les explications. ^^ mais merci, je devrais finir pas trouver comment ça marche quand même.
cs_akarui
Messages postés3Date d'inscriptionsamedi 9 octobre 2010StatutMembreDernière intervention16 octobre 2010 16 oct. 2010 à 18:34
Nan, mais ça ressemble, je suis à l'INSA de Rouen. et le moins qu'on puisse dire c'est que les cours sont plutôt bordéliques. >< en gros on a eu des profs l'an dernier qui ne nous ont rien appris, et cette année, ils nous demandent de faire un programme, sans bien sur avoir aucun cours d'info. c'est assez desespérant ...