8.8.2 | Anwendung von Layout-Managern |
Bei der Anwendung eines Layout-Managers sind konkret folgende Schritte anzuwenden:Bei Applets dagegen muss die Größe des Applet-Ausschnitts in der HTML-Seite im APPLET-Tag zunächst fest vorgegeben werden.
- Erzeugung eines Exemplars des gewünschten Layout-Managers
- Registrierung des Layout-Managers beim Container, auf den das Layout angewendet werden soll. Dies erfolgt mit dessen Methode setLayout().
- Hinzufügen der Komponenten
- Abschließend muss die Methode pack() des Fensters aufgerufen werden, in dem die Komponenten und die Container zusammengefasst werden. Sie ist in der Klasse Window definiert und somit auch in Frame und Dialog verfügbar. Durch diesen Aufruf werden die Abmessungen des Containers als auch die der eingebetteten Container (z. B. Panel-Objekte) entsprechend dem Platzbedarf der enthaltenen Komponenten initialisiert.
Zwar besitzt die Klasse Applet wie alle anderen Komponenten auch eine Methode setSize(), jedoch ist sie so überschrieben, dass sie die Methode appletResize() des Interface AppletStub aufruft, über das das Applet mit dem Browser kommuniziert. Somit hängt es von der Implementierung dieser Methode durch den Browser ab, ob die Größenänderung tatsächlich durchgeführt wird. In den gängigen Browsern wie Netscape Navigator, Internet Explorer und HotJava ist appletResize() leer implementiert, so dass die Größe zur Laufzeit nicht mehr geändert werden kann.
Einzig der appletviewer gestattet es, z. B. mit der AnweisungsetSize(getPreferredSize());die Größe des Applets abzuändern.
Damit ein Container die Mindestgröße bzw. die bevorzugte Größe einer Komponente ermitteln kann, definiert die Klasse Component die Methoden minimumSize() und preferredSize().
Diese beiden Methoden wurden in Version 1.1 verworfen und durch getMinimumSize() und getPreferredSize() ersetzt.
Letztere rufen standardmäßig die korrespondierenden alten Methoden auf, die in den einzelnen Komponenten entsprechend überschrieben sind. Wenn man also eine Komponente abwärtskompatibel halten will, muss man die alten Methoden überschreiben und die neuen get-Methoden belassen.
Weiterhin ist zu beachten, dass sich die Methode pack() von Window nach den bevorzugten Abmessungen (getPreferredSize()) richtet. In selbstdefinierten Komponenten ist es daher unabdingbar, diese Methode (oder preferredSize()) zu überschreiben, wenn man die Container-Größe mit pack() einstellen möchte.