Die 10 Prinzipien des Gridbag Layouts
-
Gridbag legt Komponenten (Textfelder, Buttons, Comboboxen, Container usw.)
in einem Gitter (grid) aus Zeilen und Spalten ab. Jede Komponente
erhält ihre eigene Zelle in diesem Gitter. Diese können wir ihr
zuweisen durch Angabe von Koordinaten im Gitter.Wenn wir dies nicht tun,
dann bekommt die Komponente eine Zelle relativ (rechts oder unterhalb) zur
vorher eingefügten Komponente
(GDL-Attribute x und
y).
-
Wir können einer Komponente auch mehr als eine Zelle - horizontal sowie
vertikal - in dem Gitter zuweisen
(GDL-Attribute w und
h).
-
Wir unterscheiden zwischen der bevorzugten Größe einer Komponente
und der Größe ihrer Zelle.
-
Die bevorzugte Grösse (bevorzugte Breite und bevorzugte Höhe)
einer Komponente richtet sich nach der Natur der Komponente, ihrem Label
(z.B. Aufschrift eines Buttons oder Bezeichnung eines Textfeldes) und explizit
hinzugefügten oder abgezogenen Pixeln
(GDL-Attribute px
und py) bzw. Insets, also Abständen zu Nachbarzeilen bzw. -spalten
(GDL-Attribute it,
ib, il und ir).
-
Die Größe einer Zelle (also ihre Höhe und Breite)
ist abhängig von der Höhe der Zeile und der Breite der Spalte,
in der sie sich befindet: Alle Zellen einer Zeile haben dieselbe Höhe,
und alle Zellen einer Spalte haben dieselbe Breite. Die Höhe einer Zeile
ist das Maximum der bevorzugten Höhen ihrer Komponenten. Analog ist
die Breite einer Spalte das Maximum der bevorzugten Breiten ihrer Komponenten.
(Daraus folgt nebenbei, dass Zeilen oder Spalten ohne Komponenten die Höhe
bzw. Breite 0 haben.)
-
Es ergibt sich, dass eine Komponente nicht größer als ihre Zelle
sein kann, aber - bei heterogenen Zeilen oder Spalten - durchaus kleiner.
Falls es in ihrer Zeile/Spalte Komponenten mit größerer bevorzugter
Breite/Höhe gibt, dann kann die Komponente ihre Zelle nicht ganz
ausfüllen. Das Verhalten der Komponente innerhalb ihrer Zelle können
wir für solche Fälle festlegen: Wir können sie dazu veranlassen,
sich in einer oder beiden Dimensionen in ihrer Zelle auszudehnen
(GDL-Attribut
fill). Und wir können ihr einen Platz (z.B. Nordwesten) in der
Zelle geben, an dem sie sich zeigen
soll (GDL-Attribut
an). Wenn wir das nicht explizit tun, dann wird sie im Zentrum ihrer
Zelle mit ihrer bevorzugten Größe dargestellt (default).
-
Die Höhenproportionen der Zellen einer Spalte (also das Verhältnis
der Höhen der Zellen der Spalte zueinander) sowie die Breitenproportionen
der Zellen einer Zeile (also das Verhältnis der Breiten der Zellen der
Zeile zueinander) lassen sich beeinflussen: Jede Komponente können wir
mit einer Höhen- und einer Breiten-Gewichtung versehen, einer vertikalen
bzw. einer horizontalen Viskosität
(GDL-Attribute wx
bzw. wy).
-
Eine Spalte hat als Breitengewichtung das Maximum der Breitengewichtungen
ihrer Komponenten. Eine Zeile hat als Höhengewichtung das Maximum der
Höhengewichtungen ihrer Komponenten.
-
Abhängig von ihrer Viskosität verhalten sich dann die Zeilen und
Spalten beim Resizing des Layouts: soweit mehr Raum als das Minimum zur
Verfügung steht, wird er proportional zu der Gewichtung an die
konkurrierenden Zeilen/Spalten verteilt. Extra-Raum in horizontaler Richtung
wird dann proportional zu deren Breitengewichtungen unter den Spalten aufgeteilt,
analog Extra-Raum in vertikaler Richtung proportional zu deren
Höhengewichtungen unter den Zeilen.
Wenn alle Komponenten eine horizontale sowie vertikale Viskosität von
0 haben (die Default-Einstellung im Gridbag Layout), werden sich alle
Komponenten in der Mitte ihres Containers zusammendrängen, wie sehr
wir auch unser Layout auseinanderziehen. Wenn wir wenigstens eine Komponente
einer Spalte/Zeile mit einer Viskosität größer 0 versehen,
wird sich die komplette Spalte/Zeile mit zunehmender Größe des
Layouts ausdehnen.
-
Mache Dir von Deinem Layout zuerst eine Skizze mit Bleistift und Papier,
in der Du auch eine Unterteilung in Gitter-Zeilen und -Spalten nicht vergisst.
Dann wirst Du sehen, wie leicht und effektiv die Gestaltung mit dem Gridbag
Layout ist.
Seitenanfang
home