Ich habe einen Border mit dieser Verteilung: Wie bekomme ich den verfügbaren Platz in einem Layout?
In der roten Position Ich möchte ein Bild so skaliert setzen, dass sie alle füllt sich der Raum zur Verfügung. Auch habe ich die Möglichkeit, das Bild mit verschiedenen Maßstäben des realen Bildes zu zeigen (20%, 50%, 100% ...).
Ich versuche, den Skalierungsfaktor zu finden, die das Bild passen perfekt macht:
//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);
Das Problem ist, dass ich nicht die Größe des verfügbaren Speicherplatzes (Für BorderLayout.CENTER) finden können. Ich schrieb im Code der Fenstergröße, aber das ist falsch, habe ich auch versucht, mit:
this.getLayout().preferredLayoutSize(this).width;
aber es gibt auch einen falschen Wert oder zumindest nicht, was ich versuche zu finden. Und ich kann keine andere Methode finden, die sich auf die Größe bezieht. Und es ist nicht machbar, den Wert aus dem Panel zu bekommen, das da sein wird, da ich den Wert vor der Erstellung brauche.
Kann mir jemand sagen, wie ich diesen Wert finden könnte? Danke.
Sie haben vergessen, das von Ihnen verwendete Framework anzugeben. Sieht so aus als würdest du AWT/Swing benutzen? – SOFe
@PEMapModder ja, tut mir leid, ich habe es gerade hinzugefügt. – nck