Hallo,
ich möchte die preferredSize einer Komponente abhängig von der Fenstergröße berechnen, in der sich die Komponente befindet. Dazu habe ich getPreferredSize() überschrieben
Wie zu sehen ist, beziehe ich mich hier einfach auf die aktuelle preferred size und berechne daraus die neue gewünschte (wichtig ist halt, dass das Seitenverhältnis korrekt bleibt). Bei langsamem manuellem Vergrößern/Verkleinern des Fensters klappt das auch halbwegs. Macht man das zu schnell oder benutzt gar Maximize/Unmaximze des Windowmanagers, dann klappts halt nicht mehr, da die preferredSize der Komponente abgefragt wird, bevor die Änderung der Fenstergröße stattfindet. Zu dem Zeitpunkt kenn ich natürlich nur die alte Größe.
Was gibt es denn für sinnvolle Wege, mein Ziel zu erreichen, dass ich die preferredSize immer abhängig von der endgültigen Fenstergröße mache?
ich möchte die preferredSize einer Komponente abhängig von der Fenstergröße berechnen, in der sich die Komponente befindet. Dazu habe ich getPreferredSize() überschrieben
Java:
@Override
public Dimension getPreferredSize(){
final Dimension prefSize= super.getPreferredSize();
//calculate new preferred size based on the current preferred size
prefSize.setSize(this.getWidth(), this.getWidth() / PREF_RATIO);
return prefSize;
}
Wie zu sehen ist, beziehe ich mich hier einfach auf die aktuelle preferred size und berechne daraus die neue gewünschte (wichtig ist halt, dass das Seitenverhältnis korrekt bleibt). Bei langsamem manuellem Vergrößern/Verkleinern des Fensters klappt das auch halbwegs. Macht man das zu schnell oder benutzt gar Maximize/Unmaximze des Windowmanagers, dann klappts halt nicht mehr, da die preferredSize der Komponente abgefragt wird, bevor die Änderung der Fenstergröße stattfindet. Zu dem Zeitpunkt kenn ich natürlich nur die alte Größe.
Was gibt es denn für sinnvolle Wege, mein Ziel zu erreichen, dass ich die preferredSize immer abhängig von der endgültigen Fenstergröße mache?
Zuletzt bearbeitet: