Package pi.graphics.boxes
Class Box
java.lang.Object
pi.graphics.boxes.Box
- Direct Known Subclasses:
BackgroundBox,BorderBox,CellBox,ChildsBox,CombinedChildBox,InsetBox,LeafBox
Eine Box beschreibt eine rechteckige grafische Fläche, die weitere
Kinder-Boxen enthalten kann.
- Since:
- 0.38.0
- Author:
- Josef Friedrich
-
Field Summary
FieldsModifier and TypeFieldDescriptionAlle Kinder-Boxen, die diese Box enthält.protected intDie gesetzte Höhe in Pixel.protected intDie gesetzte Breite in Pixel.protected booleanDie Box wird nicht gezeichnet, wenn sie deaktiviert ist.protected intDie Höhe der Box in Pixel.protected booleanIst dieses Attribut wahr, so wird diecalculateDimension()-Methode zweimal hintereinander rekursive aufgerufen.protected BoxDie übergeordnete Box, in der diese Box enthalten ist.protected booleanGibt an, ob bei dieser Box die Abmessungen gesetzt werden können oder ob die Abmessungen nur automatisch bestimmt werden können.protected intDie Breite der Box in Pixel.protected intDie x-Koordinate der linken oberen Ecke in Pixel.protected intDie y-Koordinate der linken oberen Ecke in Pixel. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionanchor(int x, int y) Setzt die x- und y-Koordinate der linken oberen Ecke in Pixel.protected abstract voidBerechnet rekursiv alle Ankerpunkte (linkes oberes Eck) der untergeordneten Kinder-Boxen.protected abstract voidBerechnet rekursiv die Abmessung (die Höhe und Breite) der eigenen Box.debug()disable()Deaktiviert die Box.disabled(boolean disabled) Setzt den Deaktiviert-Status.enable()Aktiviert die Box.height(int height) iterator()Liefert einen Iterator über die direkten Kinder dieser Box.voidmeasure()Misst alle Kind-Boxen aus.protected voidprotected voidBerechnet rekursiv die Abmessung (die Höhe und Breite) aller Kind-Boxen und dann die Abmessung eigenen Box.abstract intGibt die Anzahl an Kinder-Boxen zurück.Setzt den Messstatus dieser Box auf „nicht gemessen“ zurück.render(Graphics2D g) Berechnet die Abmessungen und Ankerpunkte und zeichnet die Box.toggle()Schaltet zwischen dem Status deaktiviert und aktiviert hin- und her.Gibt einen vorkonfiguriertenToStringFormatteraus.width(int width) x(int x) Setzt die x-Koordinate der linken oberen Ecke in Pixel.y(int y) Setzt die y-Koordinate der linken oberen Ecke in Pixel.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
childs
Alle Kinder-Boxen, die diese Box enthält.- Since:
- 0.41.0
-
parent
Die übergeordnete Box, in der diese Box enthalten ist. Dieses Attribut kannnullsein, wenn keine Elternbox vorhanden ist.- Since:
- 0.38.0
-
width
protected int widthDie Breite der Box in Pixel.- Since:
- 0.40.0
-
height
protected int heightDie Höhe der Box in Pixel.- Since:
- 0.40.0
-
definedWidth
protected int definedWidthDie gesetzte Breite in Pixel. Im Gegensatz zuwidthwird dieses Attribut gesetzt und nicht durchcalculateDimension()berechnet. -
definedHeight
protected int definedHeightDie gesetzte Höhe in Pixel. Im Gegensatz zuheightwird dieses Attribut gesetzt und nicht durchcalculateDimension()berechnet. -
supportsDefinedDimension
protected boolean supportsDefinedDimensionGibt an, ob bei dieser Box die Abmessungen gesetzt werden können oder ob die Abmessungen nur automatisch bestimmt werden können. -
measureDimensionTwice
protected boolean measureDimensionTwiceIst dieses Attribut wahr, so wird diecalculateDimension()-Methode zweimal hintereinander rekursive aufgerufen.Falls in der
calculateDimension()-Methode die Abmessungen von Kinder-Boxen verändert werden, ist ein zweiter Messdurchgang nötig.- See Also:
-
x
protected int xDie x-Koordinate der linken oberen Ecke in Pixel.- Since:
- 0.38.0
-
y
protected int yDie y-Koordinate der linken oberen Ecke in Pixel.- Since:
- 0.38.0
-
disabled
protected boolean disabledDie Box wird nicht gezeichnet, wenn sie deaktiviert ist.
-
-
Constructor Details
-
Box
public Box()
-
-
Method Details
-
iterator
Liefert einen Iterator über die direkten Kinder dieser Box.Standardmäßig sind Boxen ohne Kinder definiert — Container-Subklassen sollten diese Methode überschreiben, um tatsächliche Kinder zu liefern.
-
width
-
height
-
x
Setzt die x-Koordinate der linken oberen Ecke in Pixel.- Parameters:
x- Die x-Koordinate der linken oberen Ecke in Pixel.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.38.0
-
y
Setzt die y-Koordinate der linken oberen Ecke in Pixel.- Parameters:
y- Die y-Koordinate der linken oberen Ecke in Pixel.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.38.0
-
anchor
Setzt die x- und y-Koordinate der linken oberen Ecke in Pixel.- Parameters:
x- Die x-Koordinate der linken oberen Ecke in Pixel.y- Die y-Koordinate der linken oberen Ecke in Pixel.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.38.0
-
disabled
Setzt den Deaktiviert-Status.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.42.0
-
disable
Deaktiviert die Box.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.42.0
-
enable
Aktiviert die Box.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.42.0
-
toggle
Schaltet zwischen dem Status deaktiviert und aktiviert hin- und her.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.42.0
-
numberOfChilds
public abstract int numberOfChilds()Gibt die Anzahl an Kinder-Boxen zurück.- Returns:
- Die Anzahl an Kinder-Boxen.
-
calculateDimension
protected abstract void calculateDimension()Berechnet rekursiv die Abmessung (die Höhe und Breite) der eigenen Box.Single-Child-Code-Beispiel
protected void calculateDimension() { width = child.width + 2 * margin; height = child.height + 2 * margin; }Multiple-Child-Code-Beispiel
protected void calculateDimension() { int maxWidth = 0; for (Box child : childs) { if (child.width > maxWidth) { maxWidth = child.width; } height += child.height; } width = maxWidth; } -
measureDimension
protected void measureDimension()Berechnet rekursiv die Abmessung (die Höhe und Breite) aller Kind-Boxen und dann die Abmessung eigenen Box.Falls das Flag
measureDimensionTwicegesetzt ist, werden diese Berechnungen zweimal durchgeführt. -
calculateAnchors
protected abstract void calculateAnchors()Berechnet rekursiv alle Ankerpunkte (linkes oberes Eck) der untergeordneten Kinder-Boxen. Die inneren Blattboxen brauchen diese Methode nicht zu implementieren.Single-Child-Code-Beispiel
protected void calculateAnchors() { child.x = x + margin; child.y = y + margin; }Multiple-Child-Code-Beispiel
protected void calculateAnchors() { int yCursor = y; for (Box child : childs) { child.x = x; child.y = yCursor; yCursor += child.height; } }- Since:
- 0.38.0
-
measureAnchors
protected void measureAnchors() -
measure
public void measure()Misst alle Kind-Boxen aus.Bestimmt rekursiv zuerst die Abmessungen (Höhe und Breite) und anschließend die Ankerpunkte (x, y) der Kind-Boxen.
-
remeasure
Setzt den Messstatus dieser Box auf „nicht gemessen“ zurück.Dies zwingt die Box, ihre Dimensionen bei der nächsten Messung neu zu berechnen.
- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..).
-
render
Berechnet die Abmessungen und Ankerpunkte und zeichnet die Box.- Parameters:
g- DasGraphics2D-Objekt, in das gezeichnet werden soll.- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.38.0
-
toStringFormatter
Gibt einen vorkonfiguriertenToStringFormatteraus.- Since:
- 0.42.0
-
debug
- Returns:
- Eine Referenz auf die eigene Instanz der Box, damit nach dem
Erbauer/Builder-Entwurfsmuster die Eigenschaften der Box durch
aneinander gekettete Setter festgelegt werden können, z. B.
box.x(..).y(..). - Since:
- 0.42.0
-