Partage
  • Partager sur Facebook
  • Partager sur Twitter

Centrage Panel dans Frame

    14 juin 2021 à 18:56:44

    Bonsoir, j'ai un petit soucis.

    Depuis que j'ai commencé mon projet de groupe, lorsque je lance ce dernier et que ma fenêtre s'ouvre, cette dernière se centre au milieu de ma fenêtre, comme s'il y avait des marges de chaques côtés ainsi que dessus et dessous...

    public class Fenetre extends JFrame implements ActionListener, FocusListener{
        
        private JLabel Humi;
        private JLabel Lum;
        private JLabel Heure;
        private JLabel Temp;
        private JLabel reser1;
        private JLabel reser2;
        private JButton Selec;
        private JButton Ajout;
        private JButton Modif;
        private JButton Param;
        private ImageIcon reservoire1;
        private ImageIcon reservoire2;
        
        public Fenetre(){
            //personalisation de la fenetre
            
            this.setTitle("Accueil");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setPreferredSize(new Dimension(800, 480));
            
            
            initialisation();
    
        }
        
        private void initialisation(){
            // création des composants;
    
            Humi = new JLabel("humidite");
            //Humi.setBorder(new BevelBorder(1));
            Humi.setBorder(BorderFactory.createEmptyBorder(10, 10, 25, 0)); // permet de définir des bordures vides 
            //Humi.setFont(new Font("Arial",Font.BOLD,10));
    
            Lum = new JLabel("luminosite");
            Lum.setBorder(BorderFactory.createEmptyBorder(10, 25, 25, 0));
            
            Heure = new JLabel("heure");
            Heure.setBorder(BorderFactory.createEmptyBorder(10, 100, 25, 0));
            
            Temp = new JLabel("temperature");
            Temp.setBorder(BorderFactory.createEmptyBorder(10, 25, 25, 10));
            
            reser1 = new JLabel("Reservoire 1");
            reser1.setBorder(BorderFactory.createEmptyBorder(0, 15, 0, 0));
            reser2 = new JLabel("Reservoire 2");
            reser2.setBorder(BorderFactory.createEmptyBorder(0, 107, 0, 0));
            
            Selec = new JButton("Menu selection des plantes");
            Selec.setPreferredSize(new Dimension(600, 50));
            
            Ajout = new JButton("Menu ajout de plantes");
            Ajout.setPreferredSize(new Dimension(600, 50));
            
            Modif = new JButton("Menu modification des dosages");
            Modif.setPreferredSize(new Dimension(600, 50));
            
            Param = new JButton("Param");
            
            JButton reserv1 = new JButton();
            reserv1.setBorder(BorderFactory.createEmptyBorder(0,(-110),0,0));
            ImageIcon reserv = new ImageIcon(getClass().getResource("../img/reserv5.png"));
            reserv1.setOpaque(false);
            reserv1.setContentAreaFilled(false);
            reserv1.setBorderPainted(false);
            
            JButton reserv2 = new JButton();
            reserv2.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
            ImageIcon reser = new ImageIcon(getClass().getResource("../img/reserv3.png"));
            reserv2.setOpaque(false);
            reserv2.setContentAreaFilled(false);
            reserv2.setBorderPainted(false);
            
            JButton param = new JButton();
            param.setBorder(BorderFactory.createEmptyBorder(0,70,0,0));
            ImageIcon para = new ImageIcon(getClass().getResource("../img/parametre.png"));
            param.setOpaque(false);
            param.setContentAreaFilled(false);
    //        reserv2.setBorderPainted(false);
    
            JButton pompe = new JButton();
            pompe.setBorder(BorderFactory.createEmptyBorder(0,0,0,0));
            ImageIcon pump = new ImageIcon(getClass().getResource("../img/pompe.png"));
            pompe.setOpaque(false);
            pompe.setContentAreaFilled(false);
            reserv2.setBorderPainted(false);
            
            JButton ledv = new JButton();
            ledv.setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); // (top, left, bottom, right)
            ImageIcon vert = new ImageIcon(getClass().getResource("../img/ledv.png"));
            ledv.setOpaque(false);
            ledv.setContentAreaFilled(false);
            ledv.setBorderPainted(false);
            
            //création d'un panneau
            JPanel pano = new JPanel();
            
            // ajout du gestionnaire de placement au panneau
            pano.setLayout(new GridBagLayout());
            
            GridBagConstraints cont = new GridBagConstraints();
            
            // placement des composants
            cont.fill=GridBagConstraints.BOTH;
            
            // placement du taux d'humidité dans le sol
            cont.gridx = 0;//j
            cont.gridy = 0;//i
            pano.add(Humi, cont);
            
            // placement du taux de luminosité dans la serre
            cont.gridx = 1;
            cont.gridy = 0;
            pano.add(Lum,cont);
            
            // placement de l'heure
            cont.gridx = 2;
            cont.gridy = 0;
            pano.add(Heure,cont);
            
            // placement de la température dans la serre
            cont.gridx = 3;
            cont.gridy = 0;
            pano.add(Temp,cont);
            
            // placement du bouton de selection
            cont.gridx = 0;
            cont.gridy = 1;
            cont.gridwidth = 2;
            pano.add(Selec,cont);
            
            // placement du bouton d'ajout
            cont.gridx = 0;
            cont.gridy = 2;
            pano.add(Ajout,cont);
            
            // placement du bouton de modification
            cont.gridx = 0;
            cont.gridy = 3;
            pano.add(Modif,cont);
            
            cont.gridwidth = 1;
            
            // placement du premier réservoire à nutriments
            cont.gridx = 0;
            cont.gridy = 4;
            pano.add(reser1,cont);
            
            reserv1.setIcon(reserv);
            cont.gridx = 0;
            cont.gridy = 5;
            pano.add(reserv1, cont);
            
            // placement du deuxième réservoire à nutriments
            cont.gridx = 1;
            cont.gridy = 4;
            pano.add(reser2,cont);
            
            reserv2.setIcon(reser);
            cont.gridx = 1;
            cont.gridy = 5;
            pano.add(reserv2, cont);
            
            // placement du bouton pour les paramètres
            param.setIcon(para);
            cont.gridx = 3;
            cont.gridy = 5;
            pano.add(param, cont);
            
            // placement de la led pour la pompe (savoir si celle ci est active ou non
            pompe.setIcon(pump);
            cont.gridx = 2;
            cont.gridy = 5;
            pano.add(pompe, cont);
            
            ledv.setIcon(vert);
            cont.gridx = 2;
            cont.gridy = 6;
            pano.add(ledv, cont);
            
            //fixer le pano dans la gframe
            this.setContentPane(pano);
            this.pack();
        }

    Ci dessus ma classe.

    Merci d'avance pour votre aide, et n'hésitez pas à me poser des questions si je n'ai pas été assez clair.

    • Partager sur Facebook
    • Partager sur Twitter
      16 juin 2021 à 6:46:00

      Bonjour,

      Tu peux ajouter un GridBagLayout à ton contentPane pour centrer ton panel.

      • Partager sur Facebook
      • Partager sur Twitter
        18 juin 2021 à 10:03:57

        Salut,

        Justement, je ne veux pas que ce soit centrer.

        En gros la quand je mets la dimension etc la page prend bien la taille de ma raspi, mais le soucis, c'est qu'il met ça au centre de l'écran, de ce fait il y a des marges de chaque côté

        • Partager sur Facebook
        • Partager sur Twitter
          18 juin 2021 à 17:00:44

          Tu peux faire un pack() sur ta fenêtre après avoir ajouté le panel.
          • Partager sur Facebook
          • Partager sur Twitter

          Centrage Panel dans Frame

          × 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