Java Standard: Grafische Oberflächen mit Swing: java awt LayoutManager


LayoutmanagerBearbeiten

Die eben vorgestellten Swingkomponenten müssen natürlich noch irgendwie in ihrem Container angeordnet werden. Dabei können sowohl die Komponenten fest an eine bestimmte Stelle des Fensters gelegt werden, als auch über sogenannte Layoutmanager angeordnet werden, die die Größe und Position der einzelnen Komponenten dynamisch berechnen. Dadurch wird die Plattformunabhängigkeit erhalten, denn im Optimalfall behalten die Oberflächen unter verschieden Betriebssystemen und verschiedenen Themes ihre logische Struktur. Außerdem wird so vermieden, dass es bei Computern mit geringer Auflösung dazu kommt, dass ganze Teile der Oberfläche abgeschnitten werden.

Um die Komponenten nun in einem Layout anzuordnen, weist man dem Container einen Layoutmanager zu. Möchte man kein Layout verwenden sondern die Positionen und Größe absolut in Pixeln festlegen, so übergibt man null. Nun kann mit setBounds(int x, int y, int width, int height) die Position und die Größe der Komponente festgelegt werden. Ist man unvorsichtig, so können sich die Komponenten überlappen und es treten sehr unschöne Effekte auf. Empfohlen ist aus diesen Gründen die Benutzung eines LayoutManagers. Für die meisten Fälle lässt sich durch hierarchische Ordnung von Panels mit verschiedenen LayoutManagern das gewünschte Layout erzeugen. Bei Spezialfällen kann es nötig sein, sich seinen eigenen LayoutManager zu schreiben, der die Positionen und Größen der Komponenten berechnet. Der Container JPanel hat einen Konstruktor, dem man den gewünschten Layoutmanager bereits mitgeben kann. Dieser bietet sich also für die Erzeugung der Hierarchie an.