J'ai un BorderLayout avec cette distribution: Dans la position rouge Comment puis-je obtenir l'espace disponible dans une mise en page?
Je veux mettre une image à l'échelle afin qu'elle remplisse tout l'espace disponible. J'ai aussi la possibilité de montrer l'image avec différentes échelles de l'image réelle (20%, 50%, 100% ...).
J'essaie de trouver le facteur d'échelle qui rend l'image adapter parfaitement:
//GET VALUES
int imageWidth = image1.getWidth();
int imageHeight = image1.getHeight();
System.out.println("Image: "+imageWidth + " "+ imageHeight);
int targetWidth = this.getBounds().width;
int targetHeight = this.getBounds().height;
System.out.println("Target: " + targetWidth + " "+ targetHeight);
//GET SCALE
float scaleWidth=1;
float scaleHeight=1;
if (imageWidth > targetWidth) {
scaleWidth = (float) targetWidth/(float) imageWidth;
}
if (imageHeight > targetHeight) {
scaleHeight = (float) targetHeight/(float) imageHeight;
}
return min(scaleWidth, scaleHeight);
Le problème est que je ne trouve pas la taille de l'espace disponible (pour BorderLayout.CENTER). Je l'ai écrit dans le code de la taille de la fenêtre, mais qui est incorrecte, j'ai aussi essayé avec:
this.getLayout().preferredLayoutSize(this).width;
mais il donne également une valeur incorrecte ou du moins pas ce que je suis en train de trouver. Et je ne trouve pas d'autre méthode liée à la taille. Et essayer d'obtenir la valeur du panel qui va être là n'est pas faisable car j'ai besoin de la valeur avant de le créer.
Quelqu'un pourrait-il me dire comment trouver cette valeur? Merci.
Vous avez oublié de spécifier la structure que vous utilisez. On dirait que vous utilisez AWT/swing? – SOFe
@PEMapModder oui, désolé, je viens de l'ajouter. – nck