package javacodebook.gui.layouts; import javax.swing.*; import java.awt.*; /** * Durch die Verschachtelung mehrerer BoxLayouts kann mann sehr * komplexe Layouts gestalten. Ist das Konzept mit der Verschachtelung * einmal verstanden ist die Verwendung vom Boxlayout sehr einfach und * die Möglichkeiten sind fast so groß wie beim GridBagLayout. * * Zur Verdeulichung der Vielfältigkeit, wird in diesem Beispiel gezeigt, * wie mit Hilfe von BoxLayout sehr einfach ein BorderLayout simuliert * werden kann. */ public class MultipleBoxFrame extends JFrame { // Komponenten des Frames private JLabel north = new JLabel("Norden"); private JLabel south = new JLabel("Süden"); private JLabel west = new JLabel("Westen"); private JLabel east = new JLabel("Osten"); private JTextArea center = new JTextArea(5,20); private Container frameContent; private JPanel innerContent; /** * Konstruktor von MultipleBoxFrame. */ public MultipleBoxFrame(String title) { super(title); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Wie gehabt benötigen wir den Basis Container vom JFrame frameContent = this.getContentPane(); // Ein zweiter Container wird benötigt, dieser wird später // in den anderen eingebetet innerContent = new JPanel(); // Jeweils eine BoxLayout-Instanz muss gebaut werden, für jeden // Container eine BoxLayout outer= new BoxLayout(frameContent, BoxLayout.X_AXIS); BoxLayout inner= new BoxLayout(innerContent, BoxLayout.Y_AXIS); frameContent.setLayout(outer); innerContent.setLayout(inner); // Der innere Panel wird bestückt innerContent.add(north); innerContent.add(center); innerContent.add(south); // Der äußere (Content-) Panel wird bestückt frameContent.add(west); // Hier wird der innere in den äußeren gelegt. frameContent.add(innerContent); frameContent.add(east); } }