Swing bietet eine Reihe von Möglichkeiten, um das Aussehen der Benutzeroberfläche einfacher zu gestalten. Neben der größeren Anzahl an vorgefertigten Komponenten und Dialogen muss in diesem Zusammenhang der Layout-Manager BoxLayout erwähnt werden und die einfache Möglichkeit, Abstände zwischen einzelnen GUI-Elementen zu definieren sowie Ränder zu erzeugen. Der in Swing neu eingeführte Layout-Manager BoxLayout kann die Komponenten in einem Container entweder vertikal oder horizontal anordnen. Durch die Verschachtelung mehrerer Container mit diesem Layout können Oberflächen schnell und intuitiv erzeugt werden, da das BoxLayout weniger komplex ist als bspw. das GridBagLayout des AWTs. Die Klasse BoxLayout wurde in den Beispielen dieses Kapitels bereits verwendet. Die Funktionsweise dieses Layouts kann daher anhand eines der Programme bereits ohne Erklärung nachvollzogen werden. In der Klasse BoxLayout wird der folgende Konstruktor verwendet: BoxLayout(Container ziel, int axis) Das Objekt ziel ist hierbei der Container, für den das Layout eingesetzt wird, bzw. axis einer der zwei Werte X_AXIS oder Y_AXIS, je nachdem, ob die in einem Container enthaltenen Komponenten horizontal oder vertikal ausgerichtet werden sollen. BoxLayout kann verwendet werden, um die Verwendung der komplexeren Struktur von GridbagLayout (siehe Kapitel 4.4) zu vermeiden. Ein BoxLayout kann so verschachtelt werden, dass es das gleiche Layout liefert wie ein GridBagLayout (siehe auch Abb. 8-26). Abb. 8.26: Box-Layout mit zwei internen BoxLayout-Panels Interessant ist auch die Möglichkeit, Ränder zu erzeugen. Die Klasse BorderFactory bietet eine Reihe von statischen Methoden, um typische Ränder zu erzeugen, bspw. einfarbige, vertiefte oder erhöhte Ränder oder auch Ränder, die einen String mit einer Beschreibung der Komponente enthalten. Möglich sind auch CompoundBorder-Objekte, die es ermöglichen, eine Komponente mit mehreren Rändern zuumgeben. Im folgenden Beispiel wird von dieser Möglichkeit Gebrauch gemacht. myJPanel.setLayout(new BoxLayout(myJPanel, BoxLayout.Y_AXIS)); myJPanel.setBorder(BorderFactory.createMatteBorder(5,5,5 ,5,Color.red)); Dieser Programm-Code erzeugt ein BoxLayout, das vertikal ausgerichtet und mit einem 5 mm starken roten Rand versehen ist.