# Fenstergröße verändern



## HannesWeninger (5. Feb 2007)

Hallo,

ich hae eine Frage zu der Veränderung der Fenstergröße. Ich habe ein Applet gemacht mit einigen Labels und Texteingabefelder und möchte jetzt, dass sich die Größe der Labels und Textfelder mit der größe des Fensters ändert.
Mache ich das mit einem ActionListener oder mit etwas anderem.

Vielen Dank für Eure Antworten!!

lg
Hannes


----------



## dieta (5. Feb 2007)

Da macht man normalerweise mit einem LayoutManager.


----------



## HannesWeninger (5. Feb 2007)

ich hba das XY Layout hergenommen da man mit diesem die einzelnen Teile besser plazieren kann.
 Kann ich das Layout von diesem in ein anderes Konvertieren oder gehts auch mit dem XY Layout irgendwie dass sich die Teile mit der Fenstergröße ändern.

Vielen Dank

lg
Hannes


----------



## dieta (5. Feb 2007)

Ich kenn kein XY Layout, kann mir aber denken, was du meinst.
Such vllt. mal bei Google Nach Java+Layout Manager oder so, da sollte sich einiges finden lassen.
Direkt konvertieren kannst du das nicht.
Und einfach nur die Größe ändern sieht nicht gut aus, denn sonst ist die Schriftgröße wieder nicht angepasst und selbst wenn du das auch noch machen würdest (ohne das des schon komplizierter als mitLayoutManagern ist), würden die Elemente immer noch zu groß wirken.


----------



## Jango (5. Feb 2007)

HannesWeninger hat gesagt.:
			
		

> ich hba das XY Layout hergenommen da man mit diesem die einzelnen Teile besser plazieren kann.
> Kann ich das Layout von diesem in ein anderes Konvertieren oder gehts auch mit dem XY Layout irgendwie dass sich die Teile mit der Fenstergröße ändern.



Du meinst das "Null"-Layout. Damit lassen sich tatsächlich Elemente mit x,-y-Koordinaten festlegen. Die Größe der einzelnen Elemente ändert sich nicht mit diesem Layout, wenn du die Fenstergröße änderst. Dazu sind wahlweise (je nach Anordnung) das FlowLayout, das BorderLayout, das GridLayout, oder auch das GridBagLayout zuständig. Verwendest du eines dieser Layout's, ändert sich die Größe deiner Elemente mit der Änderung des Fensters.
Eine Konvertierung in ein anderes Layout? Ein Layout lässt sich doch nicht in ein anderes konvertieren, aber verschachteln lassen sie sich. 
Schau dir deine Elemente an, wie du sie angeordnet haben möchtest, und wähle dann, das dafür beste Layout. 

NullLayout - ist niemals eine gute Lösung...


----------



## masta // thomas (5. Feb 2007)

Ist es eigentlich möglich, beim verändern der Größe des Frames zur Laufzeit alle Komponente *sofort* zu aktualisieren? In meinen Applikationen ändert sich die Größe der Komponenten erst dann, wenn ich mit dem Verändern des Frames fertig bin, sprich, die Maustaste loslasse.


----------



## dieta (6. Feb 2007)

Du kannst evtl. dem Frame einen ComponentListener verpassen, mit dem kannst du dann auf jede Größenänderung des Frames reagieren. Aber ich lege dir nochmal LayoutManager ans Herz: Die machen diese ganze Arbeit für dich und achten dabei auch noch darauf, dass die Proporrtionen weiterhin stimmen (ein 5cm hohes einzeiliges Textfeld, in dessen Mitte dann der Text erscheint sieht nicht wirklich gut aus).


----------



## Gast (6. Feb 2007)

Hallo,

man kann auch die Klasse LayoutManager implementieren.
Hier kann man dann in der Methode
public void layoutContainer(Container container)
recht komfortable die Grösse und Position der Elemente relativ zur Containergrösse festlegen.


----------



## dieta (6. Feb 2007)

Ja, aber die Standard-Java-LayoutManager reichen normalerweise (außer man braucht etwas Wirklich exotisches) aus.
Der Aufwand zum definieren eines eigenen LayoutManagers lohnt sich meistens nicht wirklich.

[edit]@Gast: LayoutManager ist keine Klasse, von der man erben kann, LayoutManager ist ein Interface.  [/edit]


----------



## Leroy42 (6. Feb 2007)

masta // thomas hat gesagt.:
			
		

> Ist es eigentlich möglich, beim verändern der Größe des Frames zur Laufzeit alle Komponente *sofort* zu aktualisieren? In meinen Applikationen ändert sich die Größe der Komponenten erst dann, wenn ich mit dem Verändern des Frames fertig bin, sprich, die Maustaste loslasse.



Schreibe am Anfang deines Programms (in der main-Methode) einfach:


```
Toolkit.getDefaultToolkit.setDynamicLayout(true);
```


----------



## masta // thomas (6. Feb 2007)

Danke Leroy  
Ist jetzt viel angenehmer...


----------

