~Java4Beginners~
~Java4Beginners~

BoxLayout

Das Boxlayout ist ein ziemlich schlichtes und einfaches Layout. Es können Elemente entweder nur Horizontal oder nur Vertikal in das Layout gepackt werden. Zeilen- oder Spaltenumbrüche gibt es bei diesem Layout weder zur Laufzeit, noch zu Designzeit.

Dem Konstruktor werden 2 Parameter übergeben. Der erste Parameter definiert den Container, bzw. die Komponente, für welches das Layout angewandt wird, und der zweite Parameter definiert die Ausrichtung der Einzelkomponenten, welche dem Layout hinzugefügt werden.

new BoxLayout(panel, BoxLayout.X_AXIS)

Insgesamt stehen uns für die Ausrichtung 4 Konstanten zur Verfügung.
Konstante Beschreibung
X_AXIS Die einzelnen Komponenten werden von links nach rechts angeordnet, also entlang der X-Achse.
Y_AXIS Die einzelnen Komponenten werden von oben nach unten angeordnet, also entlag der Y-Achse.
LINE_AXIS Diese Konstante entspricht im Grunde der X_AXIS, mit dem Unterschied, dass diese Konstante die ComponentOrientation des Containers berücksichtigt, welche angibt, wie Wörter ausgerichtet sind, wie z. B. im japanischen oder arabischen.
PAGE_AXIS Auch hier wird die ComponentOrientation berücksichtigt. Im Grund entspricht PAGE-AXIS der Y_AXIS.

Beispielprogramm

Im Beispielprogramm wird einem JFrame ein Container (JSplitPane) zugewiesen. Dem JSPlitPane wird jeweils für links und rechts ein JPanel zugewiesen, welche jeweils das BoxLayout erhalten. Einmal Horizontal, einmal Vertikal. Um die Ausrichtung zu erkennen, wurde jedem JPanel 4 JButtons hinzugefügt.

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;

/**
 * Beispielprogramm BoxLayout-Manager
 * @author Markus Badzura
 */
public class LayoutBox extends JFrame
{
    public void LayoutBox()
    {
        setTitle("Beispielprogram BoxLayout");
        setSize(400,400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null);
        setLocationRelativeTo(null);
        JSplitPane js = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
        js.setSize(400,400);
        JPanel panel_h = new JPanel();
        JPanel panel_v = new JPanel();
        panel_h.setLayout(new BoxLayout(panel_h, BoxLayout.X_AXIS));
        panel_v.setLayout(new BoxLayout(panel_v, BoxLayout.PAGE_AXIS));
        add(js);
        JButton bBlau = new JButton("Blau");
        JButton bGruen = new JButton("Grün");
        JButton bRot = new JButton("Rot");
        JButton bGelb = new JButton("Gelb");
        JButton bBlau1 = new JButton("Blau");
        JButton bGruen1 = new JButton("Grün");
        JButton bRot1 = new JButton("Rot");
        JButton bGelb1 = new JButton("Gelb");
        panel_h.add(bBlau);
        panel_h.add(bGruen);
        panel_h.add(bRot);
        panel_h.add(bGelb);
        panel_v.add(bBlau1);
        panel_v.add(bGruen1);
        panel_v.add(bRot1);
        panel_v.add(bGelb1);      
        js.setLeftComponent(panel_h);
        js.setRightComponent(panel_v);
        js.setDividerLocation(0.5);
        js.setDividerSize(2);
        setVisible(true);        
    }
    
    public static void main(String[] args) 
    {
        LayoutBox lb = new LayoutBox();
        lb.LayoutBox();
    }
}
Nach Ausführung können wir beide möglichen Ausrichtungen des BoxLayouts sehen. Was wir an der X_AXIS sehen können: Es wird kein Zeilenumbruch durchgeführt. Sollte der Container zu klein sein, wird trotzdem nach rechts weitergeschrieben, d. h. ausserhalb unserer Sicht.

nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-18