Hallo,
ich schreibe an einem Programm, bei dem ich mehrere Panels auf einem JLayeredPane anordne: Die Panels sind genau so groß, wie es der Rand anzeigt. Auf dem Panel sitzt jeweils eine JTextarea, in die man schreiben kann:

Nun möchte ich die gesamte Darstellung vergrößern können. Das klappt auch soweit, wenn ich einen Button drücke, erhöht sich die Schriftgröße um 1 und die Panels passen sich automatisch an.
Dafür besitzt das JLayeredPane einen eigenen LayoutManager, dessen layoutContainer-Methode so aussieht:
Nun zum Problem:
Wenn ich die Schriftgröße erhöhe, ändern sich aber die Positionen der Panels nicht, d. h. sie berühren sich sogar irgendwann.
Ich möchte aber, dass sich auch die Abstände mitvergrößern.
Ich möchte daher berechnen, wie breit und hoch die Zeichenfläche momentan ist (Ecke rechts unten minus Ecke links oben), dann eine "relative Position" der Panels bestimmen, dann möchte ich wissen, wie breit die Zeichenfläche nach dem Zoom sein wird und die Panels wieder auf dieselbe relative Position in dieser größeren Zeichenfläche setzen.
Die crux ist: Woher weiß ich, wie groß die Zeichenfläche sein wird?
ich schreibe an einem Programm, bei dem ich mehrere Panels auf einem JLayeredPane anordne: Die Panels sind genau so groß, wie es der Rand anzeigt. Auf dem Panel sitzt jeweils eine JTextarea, in die man schreiben kann:

Nun möchte ich die gesamte Darstellung vergrößern können. Das klappt auch soweit, wenn ich einen Button drücke, erhöht sich die Schriftgröße um 1 und die Panels passen sich automatisch an.
Dafür besitzt das JLayeredPane einen eigenen LayoutManager, dessen layoutContainer-Methode so aussieht:
Java:
public void layoutContainer(Container parent) {
for (Component c : parent.getComponents()) {
Rectangle bounds = c.getBounds();
Dimension pref = c.getPreferredSize();
c.setBounds(bounds.x, bounds.y, pref.width, pref.height);
}
}
Nun zum Problem:
Wenn ich die Schriftgröße erhöhe, ändern sich aber die Positionen der Panels nicht, d. h. sie berühren sich sogar irgendwann.
Ich möchte aber, dass sich auch die Abstände mitvergrößern.
Ich möchte daher berechnen, wie breit und hoch die Zeichenfläche momentan ist (Ecke rechts unten minus Ecke links oben), dann eine "relative Position" der Panels bestimmen, dann möchte ich wissen, wie breit die Zeichenfläche nach dem Zoom sein wird und die Panels wieder auf dieselbe relative Position in dieser größeren Zeichenfläche setzen.
Die crux ist: Woher weiß ich, wie groß die Zeichenfläche sein wird?