Bonjour à tous !
Je reviens ici car je n'arrive pas à trouver la solution à mon problème sur le net. Sans doute à cause du fait que je ne sais pas trop comment formuler ma question.
Voici mon problème :
Dans mon programme, j'ai créé une JFrame dans laquelle j'ai inséré 1 JPanel qui contient lui-même 3 JPanel via un BorderLayout (panHaut, panCentral et panBas). Chacun de ces JPanel possède sa propre classe.
Le JPanel panCentral possède un JLabel et deux JButton agencés via un GridBagLayout.
Ce que je souhaite c'est que l'un des bouton me permette de remplacer entièrement le contenu du panCentral. Mais je ne vois pas comment procéder.
Voici un code simplifié de ce que j'ai fait (je ne peux pas poster mon véritable code car il est plus que bordélique, je ne l'ai pas nettoyé et j'ai testé beaucoup de choses que je n'ai pas encore effacé) :
La JFrame :
1 2 3 4 5 6 7 8 9 10 11 12
| public class maJFrame extends JFrame {
private panGeneral pang = new panGeneral();
public maJFrame() {
this.setTitle("Test");
this.setSize(1500, 1000);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
this.setContentPane(pang);
}
} |
Le JPanel qui contient les trois autres :
1 2 3 4 5 6 7 8 9 10 11 12
| public class panGeneral extends JPanel {
JPanel panHaut = new PanHaut();
JPanel panCentral = new PanCentral();
JPanel panBas = new PanBas();
public panGeneral() {
this.setLayout(new BorderLayout());
this.add(panHaut, BorderLayout.NORTH);
this.add(panCentral, BorderLayout.CENTER);
this.add(panBas, BorderLayout.SOUTH);
}
} |
Le JPanel panCentral qui contient le bouton :
1 2 3 4 5 6 7
| public class PanCentral extends JPanel {
JButton bouton = new JButton("Changer de contenu");
public PanCentral() {
this.setLayout(new GridBagLayout());
//je passe le positionnement du bouton...
bouton.addActionListener... |
A partir de là je ne sais pas comment m'y prendre. J'ai l'impression que ce qu'il faudrait c'est que dans l'ActionListener (sous ActionPerformed) j'arrive à transformer
JPanel panCentral = new PanCentral();
en
JPanel panCentral = new PanCentral2();
puis ensuite demander à mon JPanel panGeneral de faire un repaint();
C'est ce qu'il faut faire ?
Comment on peut faire ça ?
Je vous remercie d'avance pour votre aide !
Partager