TassKaffDie 10 Prinzipien des Gridbag Layouts


  1. 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).

  2. Wir können einer Komponente auch mehr als eine Zelle - horizontal sowie vertikal - in dem Gitter zuweisen (GDL-Attribute w und h).

  3. Wir unterscheiden zwischen der bevorzugten Größe einer Komponente und der Größe ihrer Zelle.

  4. 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).

  5. 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.)

  6. 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).

  7. 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).

  8. Eine Spalte hat als Breitengewichtung das Maximum der Breitengewichtungen ihrer Komponenten. Eine Zeile hat als Höhengewichtung das Maximum der Höhengewichtungen ihrer Komponenten.

  9. 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.

  10. 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