Layoutmanager
Layoutmanager bezeichnet in der objektorientierten Programmierung Klassen, die sich um die Anordnung visueller Komponenten in einem übergeordneten Container (z. B. einem Fenster) kümmern. Dabei wird nicht im klassischen Sinne jede Komponente eine Position und Größe mittels Pixelkoordinaten positioniert, sondern der Layout Manager besitzt ein definiertes Regelwerk, wie die Komponenten angeordnet werden sollen. Der wichtigste Vorteil von Layout Managern gegenüber der absoluten Positionierung ist die Unabhängigkeit von Zeichensatz- und Fenstergrößen.
Die wohl bekannteste Programmiersprache, deren primäres GUI intensiv mit Layoutmanagern arbeitet, ist Java.
Layoutmanager in Java (Klassennamen)
- BorderLayout
- BoxLayout
- CardLayout
- FlowLayout (Standardmäßig aktiviert)
- GridBagLayout
- GridLayout
- OverlayLayout
- SpringLayout
- …
FlowLayout
Beim standardmäßig aktivierten FlowLayout werden die Komponenten einfach hintereinander angeordnet, in der Reihenfolge, wie sie auf dem Panel eingefügt wurden. Wenn das Ende des Frames erreicht ist, wird ein Zeilenumbruch erzeugt.
BorderLayout
Exemplarisch soll das BorderLayout beschrieben werden. In einem BorderLayout können fünf Komponenten angeordnet werden. Als Anordnungsregeln kann den fünf Komponenten die „Richtung“ mitgegeben werden: NORTH, EAST, SOUTH, WEST und CENTER. Folgende Grafik veranschaulicht, wo sich die Komponenten dann befinden (bitte beachten: ein LayoutManager zeigt niemals Linien, Ränder oder Rahmen an):
Üblicherweise ordnet man in einem BorderLayout Container mit weiteren Komponenten und individuellen Layouts an.
Beispielsweise würde man ein Panel (Container für GUI-Komponenten) im NORTH-Bereich mit einem FlowLayout anlegen, um dort gegebenenfalls Symbolleisten-Schaltflächen anzulegen. Im SOUTH-Bereich legt man ein Panel an (ebenfalls mit eine FlowLayout, aber mit rechtsbündiger Ausrichtung), um zum Beispiel ein OK- und Abbrechen-Schaltfläche anzulegen. Den CENTER-Bereich nutzt man mit einem Panel mit GridBagLayout für Eingabe-Elemente. Die Bereiche WEST und EAST könnte man unbesetzt lassen. Der LayoutManager würde die Komponente im CENTER-Bereich nach rechts und links komplett ausdehnen lassen.