Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.8.6

Das GridLayout



Der GridLayout-Manager ordnet seine Komponenten in einem Gitter an, das aus gleich großen Gitterzellen besteht. Hierbei nimmt jede Komponente genau eine Gitterzelle ein. Die Breite der Gitterzellen richtet sich nach der breitesten Komponente, die sich in diesem Layout befindet. Dasselbe gilt auch für die Höhe der Gitterzellen. Der Abstand der Gitterzellen kann dem Konstruktor wahlweise ebenfalls übergeben werden. Er ist per Voreinstellung 0. Die Gitterzellen werden von oben links beginnend nach rechts und unten mit Komponenten aufgefüllt.

Die Anzahl an Spalten (horizontaler Gitterzellen) und Zeilen (vertikaler Gitterzellen) des Gitters muss dem Konstruktor übergeben werden. Mit der folgenden Anweisung wird ein GridLayout mit drei Zeilen und zwei Spalten definiert:
  setLayout(new GridLayout(3, 2));
Wenn dem Layout weniger Komponenten hinzugefügt werden, als Gitterzellen vorhanden sind, dann bleiben die überzähligen Gitterzellen leer.

Abbildung 8.60: GridLayout
Abbildung 8.60


Material zum Beispiel

Werden dagegen mehr Komponenten eingesetzt, als ursprünglich im Konstruktoraufruf vorgesehen, dann werden dem Layout weitere Spalten hinzugefügt. Die anfangs im Konstruktoraufruf bestimmte Zeilenanzahl wird stets beibehalten. Abbildung 8.60 demonstriert diese beiden Fälle.

Der Konstruktor bietet aber auch die Möglichkeit, entweder die Spaltenanzahl oder die Zeilenanzahl selbst zu berechnen, indem an der entsprechenden Stelle 0 übergeben wird.

Aufgrund dieser Eigenschaft eignet sich das GridLayout dazu, Komponenten in einer Leiste darzustellen.

Ein Beispiel: Button-Leiste

Auf der Basis der Klasse Panel kann eine Button-Leiste sehr einfach implementiert werden. Wir definieren eine Klasse ComponentBar, deren Bildschirmdarstellung automatisch angepasst werden soll, wenn eine neue Komponente eingefügt wird:
  class ComponentBar extends Panel {
  
    public ComponentBar() {
      setLayout(new GridLayout(0, 1));
    }
  
    public Component add(Component c) {
      super.add(c);
      validate();
      return c;
    }
  
  }
Im Konstruktor wird ein GridLayout mit variabler Spaltenanzahl definiert. Um die automatische Aktualisierung am Bildschirm zu erzielen, wird die Methode add() überschrieben. Das eigentliche Einfügen überlassen wir einfach der add()-Methode der Oberklasse. Zusätzlich muss dann validate() aufgerufen werden, um den Container neu auszugeben. Da die add()-Methoden aller Container konventionsgemäß die neue Komponente zurückliefern, wollen wir das abschließend auch tun.

Abbildung 8.61 zeigt ein Beispiel für ComponentBar.

Abbildung 8.61: Button-Leiste unter Verwendung von GridLayout
Abbildung 8.61


Material zum Beispiel

Um eine horizontale Leiste zu erzeugen, braucht man lediglich die Null und die Eins im Konstruktor zu vertauschen. Hierdurch wird das Layout auf eine Zeile und eine variable Spaltenanzahl festgelegt.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.