Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajouter un Jpanel dans un JPanel

Sujet résolu
    18 février 2017 à 0:14:41

    Bonjour

    J'ai une JFrame qui contient 4 Panels positionnés grâce à un BorderLayout: CENTER, WEST, NORTH, SOUTH. Le Panel WEST contient un bouton Ajout qui est censé vider le Panel CENTER et ajouter un nouveau Panel que j'ai nommé nouveauPanel.

    Le problème est quand je clique sur le bouton Ajout, rien ne se passe,c'est-à-dire que le Panel CENTER ne m'affiche pas le nouveauPanel.

    Voici mon code:

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package gesstock;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.CardLayout;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    /**
     *
     * @author Mo
     */
    public class Accueil extends JFrame{
        
         JPanel panCentre = new JPanel();
         JPanel panHaut = new JPanel();
         JPanel panGauche = new JPanel();
         JPanel panBas = new JPanel();
         JPanel panNouveauPanel = new JPanel();
        
        public Accueil() {
        this.setSize(700, 500);
        this.setTitle("Gestion Entreprise");
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ajoutComposant();
        this.setVisible(true);
        }
        
        public void ajoutComposant(){
        this.setLayout(new BorderLayout());
        
        
        panHaut.setBackground(Color.red);
        panHaut.setPreferredSize(new Dimension(0, 60));
    
        panCentre.setBackground(Color.yellow);
        panCentre.setLayout(new BorderLayout());
       
        panGauche.setPreferredSize(new Dimension(120, 0));
    
        panBas.setBackground(Color.white);
        panBas.setPreferredSize(new Dimension(0, 40));
        
        JButton ajout = new JButton("Ajouter nouveau panel");
        
        panGauche.add(ajout);
       
      
        panNouveauPanel .setBackground(Color.blue);
        
        
        ajout.addActionListener(new ActionListener(){
    
            @Override
            public void actionPerformed(ActionEvent e) {
                panCentre.add(panNouveauPanel);
                
            }
        
        });
        //On ajoute les 4 panels au content pane de la JFrame
    //Au centre
    this.getContentPane().add(panCentre,BorderLayout.CENTER);
    //en haut
    this.getContentPane().add(panHaut,BorderLayout.NORTH);
    //à gauche
    this.getContentPane().add(panGauche,BorderLayout.WEST);
    //en bas
    this.getContentPane().add(panBas,BorderLayout.SOUTH);
        }
                
    }
    

    Merci

    -
    Edité par momjunior 18 février 2017 à 0:16:13

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      20 février 2017 à 9:08:55

      Bonjour,

      C'est normal que tes imports sont en commentaire?

      Sinon, essaie

      panNouveauPanel.setVisible(true);
      panCentre.add(panNouveauPanel);
      panCentre.updateUI();

      (le updateUI contient les méthode "revalidate" et "repaint", assez pratique pour actualiser les pages ;) )

      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2017 à 9:17:19

        Je ne sais pas si c'est ça mais peut être que c'est parce que tu n'ajoute pas un JPanel principal dans ta JFrame
        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2017 à 12:09:11

          Merci, ça marche. En fait il fallait que j'ajoute :

          panCentre.updateUI();

          Je ne connaissais pas cette méthode.

          Sinon mes import ne sont pas en commentaire.

          Merci

          • Partager sur Facebook
          • Partager sur Twitter

          Ajouter un Jpanel dans un JPanel

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown