TassKaffAndere LayoutManager


Neben dem GridBagLayout gibt es in Java weitere LayoutManager, die zwar nicht die vielfältigen Möglichkeiten des GridBagLayouts haben, aber für einfache Fälle durchaus hilfreich sein können.

Per Default verwendet der GuiBuilder immer das GridBagLayout; wenn Sie einen anderen LayoutManager einsetzen möchen, muß dieses bei dem jeweiligen Container gesondert deklariert werden:

<Form label="Test BorderLayout" layout="BORDER">

Erlaubte Werte für layout= sind GRID, BORDER, FLOW, FORM und NULL.

GridLayout

Hier werden die Komponenten in Zeilen und Spalten angeordnet, wobei die Zellen alle dieselbe Größe haben.

Per Default werden zwei Spalten definiert; dieses kann beim jeweiligen Container mit dem Attribut cols="<NumberOfColumns>" angepaßt werden.

Per Default beträgt der Abstand zwischen den Widgets horizontal und vertikal 5 Pixel.
Dieses kann über die Attribute colSpec ="<horizontalGap>" und rowSpec="<verticalGap>" geändert werden.

FlowLayout

Die Komponenten werden der Reihe nach von links nach rechts gemäß ihrer Größe angeordnet.

Auch hier beträgt die "Lücke" zwischen den Widgets per default 5 Pixel. Der horizontale und vertikale Abstand zwischen den Widgets wird wie beim GridLayout über colSpec und RowSpec definiert.

BorderLayout

Beim BorderLayout können bis zu fünf Komponenten gemäß den "Himmelsrichtungen" sowie im Zentrum angeordnet werden.

Welche Komponente wo erscheint wird mit dem Attribut Anchor (an=) definiert. Erlaubte Werte sind hier N,W,S,E,C.

Mit dem Attribut size="<width>,<height>" kann die Größe der Komponente (in Pixeln) angepaßt werden.

Form Layout

Dieser Layout-Manager ist nicht im JRE enthalten, sondern wurde mit freundlicher Genehmigung von Karsten Lentzsch in die Liste der verfügbaren Layout-Manager aufgenommen.

Über die beiden Attribute colSpec= und rowSpec= werden Spalten und Zeilen wie bei jgoodies beschrieben definiert.

Ansonsten wird die Positionierung der Widgets im Gitternetz wie gewohnt mit den Attributen x,y,w,h definiert.

Das hier ist ein lebendes Beispiel.

Bei der Definition der Spalten und Zeilen ist die folgende Übereinkunft einzuhalten:

Ist an einer dieser Positionen kein Zwischenraum gewünscht, ist dieser auf 0 zu setzen, also z.B. "0dlu".

Die Positionsangaben der Widgets beziehen sich auf die Zellen des Formlayout, und zwar 0-relativ. Außerdem zählen die "Abstandhalter" bei der Zählung der Positionierung und der Breite und Höhe der Widgets nicht mit.

Dieses hat den Grund, damit sich das Formlayout ähnlich dem GirdBagLayout verhält:
Die Widgets werden in einem 0-relativen Raster von Spalten und Zeilen positioniert.

Sind Widgets kleiner als die Zelle in der sie wohnen, können sie mit dem Attribut "Anchor" (an="W|C|E") innerhalb dieser Zelle ausgerichtet werden.

In GuiBuilderConfix.xml sind default-Werte für das FormLayout eingetragen.

NullLayout

Hier gibt es keinen Layoutmanager. Die Komponenten werden vielmehr unter Angabe ihrer Position und ihrer Größe absolut positioniert. Damit ist auch klar, daß bei diesem Layout die Widgets ihre Größe nicht anpassen können.

Dieses hat auch zur Folge, daß automatische Labels <Text label="Eingabe:"/> nicht mehr funktionieren, sondern diese auch einzeln spezifiziert werden müssen.

<Label label="Eingabe:" x="5" y="5" w="50" h="21"/>
<Text x="60" y="5" w="200" h="21"/>

Die Werte für die Größe der Komponente können alternativ auch mit size="<width>,<height>" angegeben werden:

<Label label="Eingabe:" x="5" y="5" size="50,21"/>
<Text x="60" y="5" size="200,21"/>