3.9.3. Flow Layout

Bei einem Flow Layout werden alle Controls nebeneinander oder untereinander gezeichnet. Die Größe der Controls wird auf deren PreferredSize gesetzt, wenn genügend Platz vorhanden ist, ansonsten werden die Controls gleichmäßig verkleinert, jedoch nicht kleiner als ihre MinSize.

Die Accessor Klasse org.jowidgets.api.layout.FlowLayout liefert einen Zugriff auf ein Flow Layout. Sie hat folgende Methoden:

    public static ILayoutFactory<ILayouter> get(){...}
    
    public static IFlowLayoutFactoryBuilder builder(){...}

Ein IFlowLayoutFactoryBuilder hat die folgenden Methoden:

    IFlowLayoutFactoryBuilder gap(int gap);

    IFlowLayoutFactoryBuilder orientation(Orientation orientation);

    IFlowLayoutFactoryBuilder vertical();

    IFlowLayoutFactoryBuilder horizontal();

    ILayoutFactory<ILayouter> build();

Die Orientation gibt an, ob die Elemente nebeneinander oder untereinander angeordnet werden. Die default Orientation ist HORIZONTAL. Die Methoden vertical() und horizontal() setzen ebenfalls die Orientation, jedoch mit verkürzter Schreibweise. Der gap definiert den Freiraum zwischen den Controls. Der default gap beträgt 4 Pixel. Die Methode build() liefert eine neue ILayoutFactory zurück.

Folgendes Beispiel demonstriert Verwendung:

  1      container.setLayout(FlowLayout.get());
  2      container.add(BPF.textLabel().setText("Attribute1"));
  3      final ITextControl textField = container.add(BPF.textField());
  4      textField.setText("This is the most common attribute");

Die folgende Abbildung zeigt das Ergebnis:

Abbildung 10. Flow Layout Beispiel 1

Flow Layout Beispiel 1

Im nächsten Beispiel wird das FlowLayout vertikal ausgerichtet:

  1      container.setLayout(FlowLayout.builder().gap(0).vertical().build());
  2      container.add(BPF.textLabel().setText("Attribute1"));
  3      final ITextControl textField = container.add(BPF.textField());
  4      textField.setText("This is the most common attribute");

Die folgende Abbildung zeigt das Ergebnis:

Abbildung 11. Flow Layout Beispiel 2

Flow Layout Beispiel 2


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation