java.sun.com

   JAVA - Layoutmanager


 Startseite
 Layoutmanager

 Indexverzeichnis


JAVA - Layoutmanager - GridBagLayout

Kurzübersicht
Constructor
Indexvariablen
Vererbung
Beispiel

  Seitenende


Kurzübersicht

Mit dem Layoutmanager GridBagLayout lassen sich Graphische Komponenten tabellarisch darstellen. Der Unterschied zum GridLayout ist, daß die Komponenten über mehrere Spalten bzw. über mehrere Zeilen gehen können.

 
 
 
 
 
 
 
 
 
 
 
 

Zuständig für die Einteilung sind zwei Klassen: java.awt.GridBagLayout und java.awt.GridBagConstraints.
GridBagLayout definiert das eigentliche Layout und GridBagConstraints stellt die Objekte sowie deren Methoden zur Verfügung, die für die Aufteilung der Zeilen und Spalten dienen.


  Seitenanfang


Constructor

GridBagLayout()erzeugt ein GridBagLayout
  
GridBagConstraints()erzeugt ein GridBagConstraints. Alle Felder haben die Standardeinstellungen.
GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)GridBagConstraints mit gridx und gridx als Startpositionen, die weightx und weigthy-anteilige Breite von der gesamten Tabelle, anchor wenn die graphische Komponente schmäler als das angezeigte Feld ist, fill wenn es breiter ist, insets den Abstand der Komponenten untereinander, ipadx und ipady werden als Puffer zur Mindestgröße der graphischen Komponente links und rechts bzw. oben und unten hinzugefügt. Siehe Indexvariablen GridBagConstraints für genauere Beschreibung


  Seitenanfang


Indexvariablen

GridBagLayout
MAXGRIDSIZE = 512größte Anzahl von Spalten und Zeilen.
MINSIZE = 1kleinste Anzahl von Spalten und Zeilen.
PREFERREDSIZE = 2Standardanzahl von Spalten und Zeilen.
comptableTabelle, in der die graphischen Komponenten und die dazugehörigen GridBagConstraints gespeichert sind.
defaultConstraints Enthält die Werte, die benutzt werden, wenn einer graphischen Komponente kein GridBagConstraints zugeordnet wird. Sie werden im Konstruktor auf die Standardwerte von GridBagConstraints gesetzt.
layoutInfo Wird intern zur Speicherung der Werte des Layouts benutzt.
columnWidths Breite der Spalten in Pixel
rowHeights Höhe der Zeilen in Pixel
columnWeights Gewichte der Spalten
rowWeights Gewichte der Zeilen
   
GridBagConstraints
RELATIVE neue Zeile oder Spalte
REMAINDER Weist der graphischen Komponente den Rest der aktuellen Spalte oder Zeile zu.
NONE Größe der graphischen Komponente kann nicht verändert werden, um das Feld auszufüllen. (für fill)
BOTH Graphische Komponente wird auf Breite und Höhe des Feldes vergrößert.(für fill)
HORIZONTAL Graphische Komponente wird auf Breite des Feldes vergrößert.(für fill)
VERTICAL Graphische Komponente wird auf Höhe des Feldes vergrößert. (für fill)
CENTER Ausrichtung im Feld: zentriert (für anchor)
NORTHEAST Ausrichtung oben rechts (für anchor)
EAST Ausrichtung rechts (für anchor)
SOUTHEAST Ausrichtung unten rechts (für anchor)
SOUTH Ausrichtung unten (für anchor)
SOUTHWEST Ausrichtung unten links (für anchor)
WEST Ausrichtung links (für anchor)
NORTHWEST Ausrichtung oben links (für anchor)
gridx Anfangs-Spaltennummer für Feld
gridy Anfangs-Zeilennummer für Feld
gridwidth Breite des Feldes
gridheight Höhe des Feldes
weightx "Gewicht" der Spalte (für Platzaufteilung der Spalten)
weighty "Gewicht" der Zeile (für Platzaufteilung der Zeilen)
anchor Dieses Datenelement enthält eine der oben beschriebenen Konstanten (für anchor). Der Wert wird benutzt, wenn die graphische Komponente kleiner als das Feld ist. Standardwert: CENTER.
fill legt fest, ob und wie die graphische Komponente vergrößert werden soll, wenn sie kleiner als das Feld ist. Standardwert: NONE.
insets Abstand der graphischen Komponente zum Feld
ipadx Wert wird zur Mindestgröße links und rechts der graphischen Komponente hinzugefügt
ipady Wert wird zur Mindestgröße oben und unten der graphischen Komponente hinzugefügt


  Seitenanfang


Vererbung

java.lang.Object
  |
  +--java.awt.GridBagLayout
  
  
java.lang.Object
  |
  +--java.awt.GridBagConstraints  


  Seitenanfang


Beispiel

BeispielProgrammbeispiel: Ansehen
import java.awt.*;
import java.applet.*;

public class GridbagLayout1 extends Applet{

public void init() {
  GridBagLayout gbl = new GridBagLayout();
  this.setLayout(gbl);
		
  GridBagConstraints c = new GridBagConstraints();
		
  c.fill = GridBagConstraints.BOTH;   // wie Komponente Bereich füllen soll
  c.weightx = 90;                     // Breite
  c.weighty = 100;                    // Höhe
  c.insets = new Insets(0,5,10,15);   // Abstände definieren
		
  Button but1 = new Button("Hallo");
  Button but2 = new Button("Hallo2");
  Button but3 = new Button("Hallo3");
		
  Checkbox cb1 = new Checkbox("Checkbox 1");
				
  TextField tf1 = new TextField("Textfeld 1");

  c.gridx = 0;                        // x-Position
  c.gridy = 0;                        // y-Position
  c.gridwidth = 1;                    // Breite
  c.gridheight = 2;                   // Höhe
  gbl.setConstraints(but1, c);          // zum GridBagConstraints hinzufügen
  add(but1);
		
  c.gridx = 1;
  c.gridy = 0;
  c.gridwidth = 3;
  c.gridheight = 1;
  gbl.setConstraints(but2, c);
  add(but2);

  c.gridx = 1;
  c.gridy = 1;
  c.gridwidth = 2;
  c.gridheight = 1;
  gbl.setConstraints(but3, c);
  add(but3);

  c.gridx = 3;
  c.gridy = 1;
  c.gridwidth = 1;
  c.gridheight = 2;
  gbl.setConstraints(tf1, c);
  add(tf1);
		
  c.gridx = 0;
  c.gridy = 2;
  c.gridwidth = 3;
  c.gridheight = 1;
  gbl.setConstraints(cb1, c);
  add(cb1);
}

}

Bei einem GridBagLayout hat man einmal das Layout, das definiert, wie die Komponenten angeordnet werden. Außerdem gibt es das GridBagConstraints, das die eingentliche Anordnung und Darstellung der Komponenten übernimmt.
Alle Einstellungen, die die Komponenten betreffen, werden also mit dem GridBagConstraints vorgenommen.
Zuerst sollte definiert werden, wie die Komponenten den Bereich, in dem sie ausgegeben werden füllen sollen c.fill = GridBagConstraints.BOTH;. Im Beisiel sollen die Komponenten so gestreckt werden, daß sie genau in den Bereich passen. Damit wird ihre Größe, z.B. wie beim GridLayout an das Layout selbst angepaßt.
Über die Breite und Höhe wird die Gewichtung angegeben, wie der Kontainer angezeigt wird. c.weightx bzw. c.weighty
Außerdem können Sie die Abstände der Komponenten über c.insets untereinander.

Anschließend wurden die Komponenten definiert. Sie können nun ausgegeben werden.
Bei der Ausgabe muß jeder Bereich, in dem eine Komponente ausgegeben werden soll, separat festgelegt werden. Dafür benötigt man die x- und y-Position sowie die Breite und Höhe.
Danach wird die Komponente mit gbl.setConstraints(cb1, c); dem Layout zugewiesen. Angegeben werden muß der Name des Layouts gbl, der Name der Komponente cb1 und der Name des GridBagConstraints c.

Um die Komponente anzeigen zu können, muß sie zusätzlich mit add ausgegeben werden.

 
weiter:
zurück:
  GridLayout
  FlowLayout
  Seitenanfang © 1999-2001  Brit Schröter