Class ShapeGroup

All Implemented Interfaces:
Drawable, Fillable, Strokeable

public class ShapeGroup extends Shape
Eine ShapwGroup ist eine Sammlung von Shapes, die gemeinsam eine Gruppe bilden. Transformationen der Gruppe werden nach den Transformationen der einzelnen Formen auf die gesammte Gruppe angewandt. So kann ein Rechteck in der Gruppe zunächst um 45 Grad gedreht werden und dann die Gruppe um -45 Grad. Das Rechteck wird dann wieder waagerecht dargestellt, während alle anderen Formen der Gruppe nun gedreht erscheinen. Da die Gruppe selbst ein eigenes Drehzentrum hat, können so komplexe Strukturen als eine eigene, zusammenhängende Form verwendet werden. (Im Gegensatz zu einer CustomShape haben Formgruppen den Vorteil, dass die einzelnen Formen individuelle Farben und Konturen bekommen können.)

Da die Größe der Gruppe durch seine zugewiesenen Formen fefstgelegt wird, sollten Modifikation wie Shape.setAnchor(Options.Direction), Shape.nextTo(Shape, Options.Direction) oder Shape.alignTo(Shape, Options.Direction, double), die die Größe der Gruppe benötigen, erst nach Hinzufügen der Gruppenelemente ausgeführt werden. Nachdem sich die Zusammensetzung der Gruppe geändert hat, muss die Gruppe ggf. neu ausgerichtet werden.

Für die Ausrichtung der Elemente in einer Gruppe können arrange(Options.Direction, double), arrangeInGrid(int, Options.Direction, double, int) und align(Options.Direction) verwendet werden, die jeweils die Position der Formen in der Gruppe ändern und nicht die Position der Gruppe selbst (so wie z.B. Shape.alignTo(Shape, Options.Direction)).

  • Field Details

  • Constructor Details

    • ShapeGroup

      public ShapeGroup()
    • ShapeGroup

      public ShapeGroup(double x, double y)
    • ShapeGroup

      public ShapeGroup(double x, double y, Shape... shapes)
  • Method Details

    • copy

      public Shape copy()
      Description copied from class: Shape
      Erzeugt eine Kopie dieser Form mit denselben Eigenschaften.

      Unterklassen implementieren diese Methode mit dem genauen Typ der Unterklasse. In Rectangle sieht die Umsetzung beispielsweise so aus:

      
       public Rectangle copy() {
           return new Rectangle(this);
       }
       

      Die Methode kann beliebig umgesetzt werden, um eine 1-zu-1-Kopie dieser Form zu erhalten. In der Regel besitzt aber jede Form einen Konstruktor, der alle Werte einer andern Form übernimmt. Die gezeigte Implementierung ist daher im Regelfall ausreichend.

      Specified by:
      copy in class Shape
      Returns:
      Eine genaue Kopie dieser Form.
    • add

      public void add(Shape... shapes)
    • add

      public void add(Shape pShape, boolean relative)
    • removeAll

      public void removeAll()
    • getShapes

      public List<Shape> getShapes()
    • getShapes

      public <ShapeType extends Shape> List<ShapeType> getShapes(Class<ShapeType> typeClass)
    • remove

      public void remove(Shape shape)
    • get

      public Shape get(int index)
    • contains

      public boolean contains(Shape shape)
    • size

      public int size()
    • getWidth

      public double getWidth()
      Description copied from class: Shape
      Liefert die aktuelle Breite dieser Form.

      Die Breite einer Form ist immer die Breite ihrer Begrenzung, bevor Drehungen und andere Transformationen auf sie angewandt wurden.

      Die Begrenzungen der tatsächlich gezeichneten Form wird mit Shape.getBounds() abgerufen.

      Specified by:
      getWidth in class Shape
      Returns:
      Die Breite der Form.
    • getHeight

      public double getHeight()
      Description copied from class: Shape
      Liefert die aktuelle Höhe dieser Form.

      Die Höhe einer Form ist immer die Höhe ihrer Begrenzung, bevor Drehungen und andere Transformationen auf sie angewandt wurden.

      Die Begrenzungen der tatsächlich gezeichneten Form wird mit Shape.getBounds() abgerufen.

      Specified by:
      getHeight in class Shape
      Returns:
      Die Höhe der Form.
    • arrange

      public void arrange(Options.Direction dir, double buffer)
    • arrangeInRows

      public void arrangeInRows(int n, Options.Direction dir, double buffer)
    • arrangeInColumns

      public void arrangeInColumns(int n, Options.Direction dir, double buffer)
    • arrangeInGrid

      public void arrangeInGrid(int n, Options.Direction dir, double buffer, int mode)
    • align

      public void align(Options.Direction dir)
    • pack

      public void pack()
    • getShape

      public Shape getShape()
      Description copied from class: Shape
      Gibt eine Java-AWT Shape Version dieser Form zurück. Intern werden die AWT Shapes benutzt, um sie auf den Grafikkontext zu zeichnen.

      Wenn diese Form nicht durch eine AWT-Shape dargestellt wird, liefert die Methode null.

      Specified by:
      getShape in class Shape
      Returns:
      Eine Java-AWT Shape die diese Form repräsentiert oder null.
    • draw

      public void draw(Graphics2D graphics, AffineTransform transform)
      Description copied from class: Shape
      Zeichnet die Form, aber wendet zuvor noch eine zusätzliche Transformations- matrix an. Wird u.A. von der ShapeGroup verwendet.
      Overrides:
      draw in class Shape