-Seminar-
Java Layout Manager (JLM)
Marc Dziadek
Begriffsdefinition

Oberfläche



Komponente


Container für Dialogelemente
Registrierung der Layout-Manager
Java-Objekte die auf einer Oberfläche
registriert werden können
Anmerkung

Oberflächen können auch Komponenten sein
Gründe für Layout Manager


Standart: Feste Anordnung der Elemente
Java plattformunabhängig



Unterschiedliche Betriebssysteme
Unterschiedliche Ausgabegeräte
Unterschiedliche Elementgröße
 Verzerrtes Layout
Layout-Manager: Java-Pakete

java.awt.*

Einbinden in Quelltext


import java.awt.*;
import java.awt.<<Layoutmanager>>;
Funktionsweise

Mit AWT und Swing nutzbar

1.
2.
JLM instanziieren
JLM der Oberfläche zuweisen

3.
Swing: contentPane
Oberflächenmethode setLayout()
Optional: Konfiguration des LM



Abstände
Ausrichtung
Etc.
Funktionsweise
4.
Komponenten bei Oberfläche registrieren
add(Component)
 automatisch bei JLM registriert

JLM kümmert sich im Rahmen interner
Regeln um die Anordnung

i.A. Reihenfolge der Komponentenregistrierung entscheidend (Ausnahmen!)
5.
Oberflächengröße minimieren
pack()
Flow-Layout



einfachster Layoutmanager
Ordnet die Elemente hintereinander an („Kette“)
public FlowLayout(int align, int hgap, int vgap)
Grid-Layout



Oberfläche wird in Gitter mit Zellen gleicher
Größe aufgeteilt
Elemente werden auf Zellengröße skaliert
 geschachtelte Layout-Manager
public GridLayout(int rows, int colums,
int hgap, int vgap)
Grid-Layout



Oberfläche wird in Gitter mit Zellen gleicher
Größe aufgeteilt
Elemente werden auf Zellengröße skaliert
 geschachtelte Layout-Manager
public GridLayout(int rows, int colums,
int hgap, int vgap)
Border-Layout


Oberfläche in 5 Bereiche aufgeteilt
(North, West, Center, East, South)
Spezifikation des Bereiches


add(String name, Component component)
Komponentenskalierung bereichsabhängig
GridBag-Layout

komplexer Layout-Manager
detailliert konfigurierbar
lange Einarbeitungszeit
viel Erfahrung nötig

beste Resultate



GridBagLayout



Gitterraster
Unterschiedliche Zellengrößen möglich
Komponenten über mehrere Zellen
GridBag-Layout
1.
2.
3.
Instanz von GridBagLayout erzeugen und
bei der Oberfläche registrieren
Object GridBagConstraints für jede
Komponente erzeugen und über deren
Membervariablen konfigurieren
Registrieren beim Layout-Manager
setConstraints(Component, GridBagConstraints)
4.
Komponente bei Oberfläche registrieren
add()
GridBagConstraints


public GridBagConstraints(
int gridx, int gridy,
int gridwidth, int gridheight,
double weightx, double weighty,
int anchor, int fill,
Insets insets, int ipadx, int ipady)
Tipp!
GridBagLayout
Menüleiste
--------------JButton, 3 Spalten----------------JTextArea,
2 Spalten, 2 Zeilen
unbenutzt
JButton,
SOUTHEAST
NULL-Layout

Kein Layoutmanager


Feste Positionierung der Komponenten
1.
2.
3.

setLayout( null );
Erzeugen der Komponente
Festlegung Position/Größe
setSize(); setLocation(); setBounds();
Registrieren der Komponente
Fenstergröße setzen (kein pack())
geschachtelte Layoutmanager
JFrame,
GridLayout
JPanel,
BorderLayout
JPanel,
GridLayout
JPanel,
GridBagLayout
Bewertung






Viel Mühe und Zeit
Viel Erfahrung nötig
Frustration
Abhängigkeiten komplexer Layouts
Unabdingbar für Plattformunabhängigkeit
Ein Muss für Java-Programmierer
Quellen




GoTo Java 2, 2. Auflage,
Guido Krüger, Addison-Wesley
Java professionell,
Gerhard Wilhelms, Markus Kopp, MITPVerlag
http://java.sun.com
http://www.java3d.org

Java 3D