GUI

OliW

Aktives Mitglied
Hallo zusammen,

eine Frage zu folgender Codezeile:

Code:
pnlAdd.setMaximumSize(getPreferredSize());

Weshalb funktioniert diese Zeile. Woher weis die Methode, daß sich der Übergebene Parameter auf pnlAdd bezieht.
Logisch wäre es, würde man schreiben

Code:
pnlAdd.setMaximumSize(pnlAdd.getPreferredSize());

Gebe ich im Parameter nämlich die getPreferredSize() Methode für ein anderes Panel an, zerschießt es mir das GUI, was auch logisch ist.

Code:
pnlAdd.setMaximumSize(einAnderesPanel.getPreferredSize());

Vielen Dank an alle, die am Sonntag dem Nachwuchs helfen :))
 

mrBrown

Super-Moderator
Mitarbeiter
getPreferredSize bezieht sich auf this - sollte this nicht zufällig pnlAdd sein, bezieht sich das also auf ein anderes Panel.
 
Zuletzt bearbeitet:

OliW

Aktives Mitglied
Also vielen Dank. Aber es war ein anderer Fehler im Code. Nachdem ich das ausgebessert habe hat die Codezeile eben nicht mehr funktioniert, weil sie nicht die otimale Größe von "pnlAdd" weitergegeben hat. Der Fehler lag in einem falsch eingebauten verticalGlue.
Mit this hat das auch nichts zu tun, da this in diesem Fall ein komplettes JFrame ist. Aber dazu hätte ich den kompletten Code einbauen müssen, damit Ihr das seht.

Trotzdem vielen Dank
 

mrBrown

Super-Moderator
Mitarbeiter
Also vielen Dank. Aber es war ein anderer Fehler im Code. Nachdem ich das ausgebessert habe hat die Codezeile eben nicht mehr funktioniert, weil sie nicht die otimale Größe von "pnlAdd" weitergegeben hat. Der Fehler lag in einem falsch eingebauten verticalGlue.
Mit this hat das auch nichts zu tun, da this in diesem Fall ein komplettes JFrame ist. Aber dazu hätte ich den kompletten Code einbauen müssen, damit Ihr das seht.
Doch, es hat mit this zu tun. getPreferredSize() bezieht sich ohne explizite Angabe eines anderen Objects auf this, dein obiger Code ist also äquivalent zu pnlAdd.setMaximumSize(this.getPreferredSize());. Der umgebende Code ist dafür egal, von dem hängt nur ab, was this ist.

Wenn die Klasse, in dem der Code steht, von JFrame abgeleitet ist (was nicht zu empfehlen ist), bezieht sich die "preferred size" auf die des JFrames, nicht auf irgendein Panel.
Solange nicht this == pnlAdd gilt, bezieht sich getPreferredSize() nie auf das Panel.
 

Neue Themen


Oben