Changer de JPanel sans ouvrir une nouvelle fenêtre

Messages postés
3
Date d'inscription
samedi 9 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2010
- - Dernière réponse : cs_akarui
Messages postés
3
Date d'inscription
samedi 9 octobre 2010
Statut
Membre
Dernière intervention
16 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 :


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


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.

Merci d'avance
Afficher la suite 

4 réponses

Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
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();
}
});
Commenter la réponse de cs_Julien39
Messages postés
3
Date d'inscription
samedi 9 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2010
0
Merci
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.
Commenter la réponse de cs_akarui
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
250
0
Merci
tu ne serais pas à l'Ensai par hasard ?
Commenter la réponse de cs_Julien39
Messages postés
3
Date d'inscription
samedi 9 octobre 2010
Statut
Membre
Dernière intervention
16 octobre 2010
0
Merci
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 ...
Commenter la réponse de cs_akarui