Incompréhension sur la taille des fenêtres et des composants
Bonjour,
je ne comprends pas comment fonctionne les dimensions dans les fenêtres, je me retrouve avec des comportements totalement incohérents je m'explique:
Si je crée une fenêtre de dimension 400 de largeur sur 500 de hauteur, et que j'y intègre 2 JPanel:
un en haut, de dimension 400 de largeur sur 60 de hauteur, (situé à x=0 et y=0)
un en dessous qui prend le reste de la fenêtre, soit 400 de largeur et (500-60=)440 de hauteur (situé à x=0 et y=60).
Cela donne le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| JFrame fenetre = new JFrame();
fenetre.setLocation(500,150);
fenetre.setTitle("Fenetre cool");
fenetre.setSize(400,500);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
//panel du haut
JPanel p1 = new JPanel();
p1.setBackground(Color.blue);
p1.setBounds(0, 0, fenetre.getWidth(), 60);
//panel du bas
JPanel p2 = new JPanel();
p2.setBackground(Color.red);
p2.setBounds(0, p1.getHeight(), fenetre.getWidth(), 400);
fenetre.setLayout(null);
fenetre.getContentPane().add(p1);
fenetre.getContentPane().add(p2); |
Le problème, c'est que le panel du bas (p2) dépasse du conteneur de la fenêtre et pour rentrer correctement, c'est à dire que son bord inférieur coïncide avec le bord inférieur de la fenêtre, sa dimension doit être de 400 !
Or, en tout logique, avec une fenêtre de 400x500, le panel du haut faisant 60 de haut, celui du bas, pour rentrer correctement devrait faire 500-60 = 440, or pour fit correctement il doit faire 400, cela n'a pas de sens ! Quelqu'un aurait une explication ?
PS: j'ai essayé en créant un JPanel contenu, Jpanel intermédiaire que je définis comme setContentPane() de la fenetre, avec un layout null et dans lequel j'ajoute mes 2 panels p1 et p2, mais j'obtient le même résultat.
Merci beaucoup ! :)