[Java] Changer de JPanel dans une JFrame
J-Bay
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis en train d'essayer de maitriser les JFrames et les JPanels et je me trouve face à un petit problème.
Le programme est simple : une JFrame, deux JPanels avec un JButton chacun. Lorsqu'on clique sur un JButton, on change le JPanel dans la JFrame.
Mon problème est le suivant : lorsque je clique sur mon bouton la JFrame semble se "bloquer" mais en la redimensionnant le JPanel change. Une fois ce redimensionnement fait le programme fonctionne correctement.
Voici mon code (je ne mets pas ma classe main car il s'agit juste d'un new FenetreVariante1();):
//code de la JFrame :
//celui de l'un des deux panneaux (ils sont quasiment pareils)
Je vous remercie par avance,
J-bay
Je suis en train d'essayer de maitriser les JFrames et les JPanels et je me trouve face à un petit problème.
Le programme est simple : une JFrame, deux JPanels avec un JButton chacun. Lorsqu'on clique sur un JButton, on change le JPanel dans la JFrame.
Mon problème est le suivant : lorsque je clique sur mon bouton la JFrame semble se "bloquer" mais en la redimensionnant le JPanel change. Une fois ce redimensionnement fait le programme fonctionne correctement.
Voici mon code (je ne mets pas ma classe main car il s'agit juste d'un new FenetreVariante1();):
//code de la JFrame :
package variante1; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JPanel; public class FenetreVariante1 extends JFrame{ JPanel p = new Panneau1(this); JPanel p2 = new Panneau2(this); public FenetreVariante1 (){ this.setMinimumSize(new Dimension (200,200)); this.setLocationRelativeTo(null); this.setTitle("Titre1"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setContentPane(p2); this.setVisible(true); } public void change (int i){ switch (i){ case 1: this.setContentPane(p); System.out.println("done1"); break; case 2: System.out.println("appel2"); this.setContentPane(p2); System.out.println("done2"); break; default: System.out.println("erreur..."); break; } } }
//celui de l'un des deux panneaux (ils sont quasiment pareils)
package variante1; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JPanel; public class Panneau1 extends JPanel { FenetreVariante1 fen; JButton j = new JButton("Panneau2"); public Panneau1(FenetreVariante1 fen) { super(); this.fen = fen; j.addActionListener(new ButtonListener()); this.add(j); } public void paintComponent (Graphics g){ System.out.println("peinture1"); super.paintComponent(g); g.setColor(Color.RED); g.fillRect(0, 0, getWidth(), getHeight()); } public class ButtonListener implements ActionListener{ //Cette méthode-ci fait appel à la méthode change de la fenetre pour //changer le JPanel @Override public void actionPerformed(ActionEvent e) { String s = ((JButton) e.getSource()).getText(); if (s.equals("Panneau2")){ fen.change(2); } } } }
Je vous remercie par avance,
J-bay
A voir également:
- [Java] Changer de JPanel dans une JFrame
- Changer dns - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages