public class SimpleGridLayout
extends java.lang.Object
implements java.awt.LayoutManager2
SimpleGridLayout
ermöglicht es Komponenten fast so flexibel wie
ein GridBagLayout
anzuordnen, ohne dabei dessen Komplexität zu
haben.Für das Layout wird ein Gitter definiert auf dem die Komponenten
angeordnet werden sollen. Viele Komponenten sollen ihre Größe in einer (in
beiden) Richtung(en) nicht ändern. Dafür kann man eine Zeile (Spalte) als fix
definieren. Zusätzlicher Platz der horizontal (vertikal) vorhanden ist, wird
gleichmäßig auf alle übrigen Zeilen (Spalten) verteilt.
Zu jeder Komponente muß ein SimpleGridConstraints
angegeben
werden, welches festlegt, an welcher Postion sich die obere linke Ecke der
Komponente befindet und über wie viele Zeile (Spalten) sie sich ersteckt.
Um das die Breite (Höhe) einer festen Zeile (Spalte) zu beeinflussen kann
man Spacer
einfügen.
Ein einfaches Beispiel:
Ein Dialog mit einer Liste. Rechts von der Liste am oberen Rand sollen 3
Buttons (Hinzufügen, Bearbeiten, Löschen) stehen und unten rechts unten
2 Buttons OK und abbrechen. Die Buttons sollen sich in der Größe nicht ändern
und ihre relative Position (rechts oben bzw. rechts unten behalten). Die
Liste soll den zur Verfügung stehenden Platz einnehmen.
+------------+----+--------+ | list qq | add | + +--------+ | | edit | + +--------+ | | del | + +--------+ | | | | | | +------------+----+--------+ | | ok | cancel | +------------+----+--------+Wir brauchen also ein 3x5 Gitter wobei die Zeile 1-3 sowie 5 und die Spalten 2-3 fixe Größe haben. Die Komponente mögen die oben eingezeichneten Namen haben. Der Container soll cont heißen:
SimpleGridLayout layout = new SimpleGridLayout(3, 5); layout.fixColumns(2, 3); layout.fixRows(1, 3); layout.fixRow(5); cont.setLayout(layout); cont.add(list, new SimpleGridConstraints(1, 1, 2, 4)); cont.add(add, new SimpleGridConstraints(3, 1)); cont.add(edit, new SimpleGridConstraints(3, 2)); cont.add(del, new SimpleGridConstraints(3, 3)); cont.add(ok, new SimpleGridConstraints(2, 5)); cont.add(cancel, new SimpleGridConstraints(3, 5));
Constructor and Description |
---|
SimpleGridLayout(java.awt.Container aContainer)
Neues Layout mit 1x1 großem Grid.
|
SimpleGridLayout(int cols,
int rows,
java.awt.Container aContainer)
Neues Layout mit cols x rows großem Grid.
|
Modifier and Type | Method and Description |
---|---|
void |
addLayoutComponent(java.awt.Component comp,
java.lang.Object constraints) |
void |
addLayoutComponent(java.lang.String name,
java.awt.Component comp)
Das Einfügen einer Komponente mit einem String als constraint ist nicht
möglich.
|
int[] |
calcColumnWidths(java.lang.Object[][] grid)
Berechnet die Breite der fixen Spalten.
|
protected void |
calcPositions(int[] positions,
int length,
int fixedNum)
Berechnet für Zeilen (Spalten) die Anfangsposition der Komponenten in der
jeweiligen Zeile, Spalte unter Berücksichtigung des angegebenen
Komponentenabstand.
|
int[] |
calcRowHeights(java.lang.Object[][] grid)
Berechnet die Breite der fixen Zeile.
|
protected int |
calcVarSizes(int[] sizes,
int start,
int length,
int prefSize,
java.util.Vector fixed)
Berechnet die Größe der nicht fix gekennzeichneten Zeilen (Spalten)
|
protected void |
checkContainer(java.awt.Container aContainer)
Prüfen, ob der übergebene container mit dem Container des Layouts
übereinstimmt.
|
protected java.lang.Object[][] |
createGrid()
Erzeugt ein 2dim Objectarray in dem alle Komponenten eingetragen werden,
die eine horizontal oder vertikal genau eine Zelle belegen.
|
void |
fixColumn(int column)
Eine Spalte
column als unveränderlich in der Größe markieren
Die Breite einer solchen Spalte richtet sich nach der preferredSize der
breitesten Komponente in dieser Spalte. |
void |
fixColumns(int firstColumn,
int lastColumn)
Spalten
firstColumn bis einschließlich
lastColumn als fix markieren. |
void |
fixRow(int row)
Eine Zeile
row als unveränderlich in der Größe markieren
Die Höhe einer solchen zeile richtet sich nach der preferredSize der
höchsten Komponente in dieser Zeile. |
void |
fixRows(int firstRow,
int lastRow)
Zeilen
firstRow bis einschließlich
lastRow als fix markieren. |
int |
getColumnCount()
Anzahl der Spalten
|
int |
getGap()
Abstand Rand-Komponente bzw.
|
float |
getLayoutAlignmentX(java.awt.Container target) |
float |
getLayoutAlignmentY(java.awt.Container target) |
int |
getRowCount()
Anzahl der Zeilen.
|
void |
invalidateLayout(java.awt.Container target) |
boolean |
isColumnFixed(int column)
true , wenn die Spalte column als
größenunveränderlich markiert wurde. |
boolean |
isRowFixed(int row)
true , wenn die Zeile row als
größenunveränderlich markiert wurde. |
void |
layoutContainer(java.awt.Container parent) |
protected SimpleGridConstraints |
lookupConstraint(java.awt.Component comp)
SimpleGridConstraints zur Komponent comp suchen |
java.awt.Dimension |
maximumLayoutSize(java.awt.Container target) |
java.awt.Dimension |
minimumLayoutSize(java.awt.Container parent) |
java.awt.Dimension |
preferredLayoutSize(java.awt.Container parent) |
void |
removeLayoutComponent(java.awt.Component comp) |
void |
setColumnCount(int value)
Anzahl der Spalten setzen.
|
protected void |
setComponentBounds(java.awt.Component comp,
int left,
int top,
int width,
int height,
SimpleGridConstraints constraints) |
protected void |
setContainer(java.awt.Container aContainer) |
void |
setGap(int value)
Abstand Rand-Komponente bzw.
|
void |
setRowCount(int value)
Anzahl der Zeilen setzen.
|
protected int |
sumSizes(int[] sizes,
int maxVarSize)
Alle Höhen (Breiten) der Zeilen (Spalten) aufsummieren
|
public SimpleGridLayout(java.awt.Container aContainer)
public SimpleGridLayout(int cols, int rows, java.awt.Container aContainer)
protected void setContainer(java.awt.Container aContainer)
protected void checkContainer(java.awt.Container aContainer)
protected SimpleGridConstraints lookupConstraint(java.awt.Component comp)
SimpleGridConstraints
zur Komponent comp suchenprotected java.lang.Object[][] createGrid()
public int[] calcColumnWidths(java.lang.Object[][] grid)
public int[] calcRowHeights(java.lang.Object[][] grid)
protected void calcPositions(int[] positions, int length, int fixedNum)
public int getColumnCount()
public void setColumnCount(int value)
IllegalArgumentException
geworfen.public int getRowCount()
public void setRowCount(int value)
IllegalArgumentException
geworfen.public int getGap()
public void setGap(int value)
IllegalArgumentException
geworfen.public void fixColumn(int column)
column
als unveränderlich in der Größe markieren
Die Breite einer solchen Spalte richtet sich nach der preferredSize der
breitesten Komponente in dieser Spalte.public void fixColumns(int firstColumn, int lastColumn)
firstColumn
bis einschließlich
lastColumn
als fix markieren.public boolean isColumnFixed(int column)
true
, wenn die Spalte column
als
größenunveränderlich markiert wurde.public void fixRow(int row)
row
als unveränderlich in der Größe markieren
Die Höhe einer solchen zeile richtet sich nach der preferredSize der
höchsten Komponente in dieser Zeile.public void fixRows(int firstRow, int lastRow)
firstRow
bis einschließlich
lastRow
als fix markieren.public boolean isRowFixed(int row)
true
, wenn die Zeile row
als
größenunveränderlich markiert wurde.public void addLayoutComponent(java.lang.String name, java.awt.Component comp)
addLayoutComponent
in interface java.awt.LayoutManager
public void removeLayoutComponent(java.awt.Component comp)
removeLayoutComponent
in interface java.awt.LayoutManager
protected int calcVarSizes(int[] sizes, int start, int length, int prefSize, java.util.Vector fixed)
protected int sumSizes(int[] sizes, int maxVarSize)
public java.awt.Dimension preferredLayoutSize(java.awt.Container parent)
preferredLayoutSize
in interface java.awt.LayoutManager
public java.awt.Dimension minimumLayoutSize(java.awt.Container parent)
minimumLayoutSize
in interface java.awt.LayoutManager
protected void setComponentBounds(java.awt.Component comp, int left, int top, int width, int height, SimpleGridConstraints constraints)
public void layoutContainer(java.awt.Container parent)
layoutContainer
in interface java.awt.LayoutManager
public void addLayoutComponent(java.awt.Component comp, java.lang.Object constraints)
addLayoutComponent
in interface java.awt.LayoutManager2
public java.awt.Dimension maximumLayoutSize(java.awt.Container target)
maximumLayoutSize
in interface java.awt.LayoutManager2
public float getLayoutAlignmentX(java.awt.Container target)
getLayoutAlignmentX
in interface java.awt.LayoutManager2
public float getLayoutAlignmentY(java.awt.Container target)
getLayoutAlignmentY
in interface java.awt.LayoutManager2
public void invalidateLayout(java.awt.Container target)
invalidateLayout
in interface java.awt.LayoutManager2
Further documentation and examples can be found under www.mathletfactory.de.