Advanced   Java   Services GridLayout Back Next Up Home


Aus der API

The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle.

Konstruktoren
GridLayout()
 
Creates a grid layout with a default of one column per component, in a single row.
GridLayout(int rows, int cols)
 
Creates a grid layout with the specified number of rows and columns.
GridLayout(int rows, int cols, int hgap, int vgap)
 
Creates a grid layout with the specified number of rows and columns.
Methoden
ReturntypName der Methode
int
 
getColumns()
Gets the number of columns in this layout.
void
 
setColumns(int cols)
Sets the number of columns in this layout to the specified value.
int
 
getRows()
Gets the number of rows in this layout.
void
 
setRows(int rows)
Sets the number of rows in this layout to the specified value.
int
 
getHgap()
Returns the horizontal gap between components.
void
 
setHgap(int hgap)
Sets the horizontal gap between components to the specified value.
int
 
getVgap()
Returns the vertical gap between components.
void
 
setVgap(int vgap)
Sets the vertical gap between components to the specified value.


Die Arbeitsweise von GridLayout

Im Normalfall zerlegt GridLayout den Container in eine Matrix mit rows * cols gleichgroßen rechteckigen Zellen. In jeder Zelle hat eine Komponente Platz. In der Defaultorientierung werden die Komponenten von links nach rechts und von oben nach unten aufgenommen in der Reihenfolge des "addens" aufgenommen. Die Komponente füllt die ganze Zelle aus. Die Angaben von getPreferredSize() werden komplett ignoriert.



Setzen des Layouts und Komponenten aufnehmen

GridLayout muß immer gesetzt werden, da es keinen Container gibt, der dieses Layout als DefaultLayout hat.

GridLayout gl = new GridLayout(2,3) ; // zwei zeilen, drei spalten
//gl.setHgap(20);
//gl.setVgap(10);
container.setLayout(gl);

JButton b[] = new JButton[6] ;

for(int i=0; i<b.length; i++)
{
   b[i] = new JButton(""+(i+1));
   container.add(b[i]) ;
}

Gibt man den Buttons noch ein wenig Farbe, sieht das folgendermaßen aus.

GridLayout1.jpg


Sonderfälle


Eine Zeile, beliebig viele Spalten
GridLayout gl = new GridLayout(1,0) ; // eine Zeilen, beliebig viele Spalten

//oder kürzer

GridLayout gl = new GridLayout() ;


Eine Spalte, beliebig viele Zeilen
GridLayout gl = new GridLayout(0,1) ; // eine Spalte, beliebig viele Zeilen


Die Berechnung der Spaltenanzahl

Ist der erste Parameter für die Anzahl der Zeilen ungleich 0, so ignoriert GridLayout die Angabe der Spaltenzahl und berechnet die Spaltenzahl sicherheitshalber mit Hilfe der tatsächlich aufgenommenen Komponenten. Ein Beispiel: Gibt man etwa als Zeilenparameter 3 ein und nimmt 10 Komponenten auf, so ergeben sich 4 Spalten. Es wird die Anzahl der Komponenten durch die Zeilenzahl geteilt und dann auf die nächste ganze Zahl aufgerundet. Die folgenden Konstruktoraufrufe sind alle legal und liefern immer ein Gitter mit drei Zeilen, egal wieviel Komponenten tatsächlich aufgenommen werden.



Eine bestimmte Zeilenzahl erzwingen
GridLayout gl = new GridLayout(3,1) ; // auf alle Fälle drei Zeilen
GridLayout gl = new GridLayout(3,100) ; // auf alle Fälle drei Zeilen
GridLayout gl = new GridLayout(3,-1) ; // auf alle Fälle drei Zeilen


Eine bestimmte Spaltenzahl erzwingen

Will man eine gewisse Spaltenzahl erzwingen, so gibt man als ersten Parameter 0 ein.

GridLayout gl = new GridLayout(0,4) ; // auf alle Fälle vier Spalten

Falls in dieser Situation die Anzahl der Komponenten kein Vielfaches der Zeilen- bzw. Spaltenzahl ist, so bleiben Plätze leer. Auf diese Weise bleibt das Layout vorhersehbar, auch wenn man zur Laufzeit Komponenten aufnimmt.



Noch ein paar Beispiele
GridLayout gl = new GridLayout(0,4) ;   // auf alle Fälle vier Spalten

Nimmt man jetzt sechs Komponenten auf, so muß eine zweite Zeile begonnen werden, das sieht dann folgendermaßen aus:

GridLayout2.jpg
GridLayout gl = new GridLayout(5,0) ;   // auf alle Fälle fünf Zeilen

Nimmt man hier sieben Komponenten auf, so muß eine zweite Spalte begonnen werden. da die Komponenten von links nach rechts aufgenommen werden, wird hier nicht die erste Spalte bis zum Ende gefüllt.

GridLayout3.jpg

Valid XHTML 1.0 Strict top Back Next Up Home