Pour récupérer le BorderLayout :
BorderLayout gestionnaireMiseEnPage = (BorderLayout)votreJFrame.getContentPane().getLayout();
Puis, si vous êtes sûr que l'espace central de votre BorderLayout ne contient qu'un JLabel, alors :
Rectangle dimensionsEtPos = ((JLabel)gestionnaireMiseEnPage.getLayoutComponent(BorderLayout.CENTER)).getBounds();
Coin supérieur gauche du JLabel central :
1 2 3 4
| System.out.println("X : " + Double.valueOf(dimensionsEtPos.getX()).toString());
System.out.println("Y : " + Double.valueOf(dimensionsEtPos.getY()).toString());
System.out.println("largeur : " + Double.valueOf(dimensionsEtPos.getWidth()).toString());
System.out.println("hauteur : " + Double.valueOf(dimensionsEtPos.getHeight()).toString()); |
Ne pas oublier dans les calculs l'éventuel existance d'un Vgap et d'un Hgap qui pourraient ajouter des pixels entre les espaces du BorderLayout.
Pour les prendre en compte :
gestionnaireMiseEnPage.getHgap() et gestionnaireMiseEnPage.getVgap()
Attention cependant :
Dans votre cas, j'ai cru comprendre que le JLabel affiche une ImageIcon. Dans ce cas, si le JLabel est d'origine et non retravaillé, l'image est affichée à sa taille complète, et positionnée avec son coin supérieur gauche comme point de placement. Dans la cas ou le JLabel aura été paramétré pour aligner son contenu horizontalement, alors il suffit de récupérer l'ImageIcon du JLabel, et récupérer sa largeur, et sa hauteur. Connaissant largeur et hauteur du JLabel, le calcul de la taille exacte de l'image devient possible.
Partager