-Seminar--Seminar-
Java Layout Manager Java Layout Manager (JLM)(JLM)
Marc DziadekMarc Dziadek
BegriffsdefinitionBegriffsdefinition
Oberfläche Oberfläche Container für DialogelementeContainer für Dialogelemente Registrierung der Layout-ManagerRegistrierung der Layout-Manager
Komponente Komponente Java-Objekte die auf einer Oberfläche Java-Objekte die auf einer Oberfläche
registriert werden könnenregistriert werden können Anmerkung Anmerkung
Oberflächen können auch Komponenten Oberflächen können auch Komponenten seinsein
Gründe für Layout ManagerGründe für Layout Manager
Standart: Feste Anordnung der Standart: Feste Anordnung der ElementeElemente
Java plattformunabhängigJava plattformunabhängig Unterschiedliche BetriebssystemeUnterschiedliche Betriebssysteme Unterschiedliche AusgabegeräteUnterschiedliche Ausgabegeräte
Unterschiedliche ElementgrößeUnterschiedliche Elementgröße Verzerrtes LayoutVerzerrtes Layout
Layout-Manager: Java-Layout-Manager: Java-Pakete Pakete
java.awt.*java.awt.*
Einbinden in QuelltextEinbinden in Quelltext import java.awt.*; import java.awt.*; import java.awt.<<Layoutmanager>>;import java.awt.<<Layoutmanager>>;
FunktionsweiseFunktionsweise
Mit AWT und Swing nutzbarMit AWT und Swing nutzbar Swing: contentPaneSwing: contentPane
1.1. JLM instanziierenJLM instanziieren2.2. JLM der Oberfläche zuweisenJLM der Oberfläche zuweisen
Oberflächenmethode setLayout()Oberflächenmethode setLayout()
3.3. Optional: Konfiguration des LMOptional: Konfiguration des LM AbständeAbstände AusrichtungAusrichtung Etc. Etc.
FunktionsweiseFunktionsweise
4.4. Komponenten bei Oberfläche Komponenten bei Oberfläche registrierenregistrierenaddadd(Component)(Component)
automatisch bei JLM registriertautomatisch bei JLM registriert JLM kümmert sich im Rahmen interner JLM kümmert sich im Rahmen interner
Regeln um die AnordnungRegeln um die Anordnung i.A. Reihenfolge der Komponenten-i.A. Reihenfolge der Komponenten-
registrierung entscheidend (Ausnahmen!)registrierung entscheidend (Ausnahmen!)
5.5. Oberflächengröße minimierenOberflächengröße minimierenpackpack()()
Flow-LayoutFlow-Layout
einfachster Layoutmanagereinfachster Layoutmanager Ordnet die Elemente hintereinander an Ordnet die Elemente hintereinander an
(„Kette“)(„Kette“) publicpublic FlowLayout( FlowLayout(intint align, align, intint hgap, hgap, intint
vgap) vgap)
Grid-LayoutGrid-Layout
Oberfläche wird in Gitter mit Zellen Oberfläche wird in Gitter mit Zellen gleicher Größe aufgeteiltgleicher Größe aufgeteilt
Elemente werden auf Zellengröße skaliertElemente werden auf Zellengröße skaliert
geschachtelte Layout-Managergeschachtelte Layout-Manager publicpublic GridLayout( GridLayout(intint rows, int colums, rows, int colums,
intint hgap, hgap, intint vgap) vgap)
Grid-LayoutGrid-Layout
Oberfläche wird in Gitter mit Zellen Oberfläche wird in Gitter mit Zellen gleicher Größe aufgeteiltgleicher Größe aufgeteilt
Elemente werden auf Zellengröße skaliertElemente werden auf Zellengröße skaliert
geschachtelte Layout-Managergeschachtelte Layout-Manager publicpublic GridLayout( GridLayout(intint rows, int colums, rows, int colums,
intint hgap, hgap, intint vgap) vgap)
Border-LayoutBorder-Layout
Oberfläche in 5 Bereiche aufgeteiltOberfläche in 5 Bereiche aufgeteilt(North, West, Center, East, South)(North, West, Center, East, South)
Spezifikation des BereichesSpezifikation des Bereiches addadd(String name, Component component) (String name, Component component)
Komponentenskalierung bereichsabhängigKomponentenskalierung bereichsabhängig
GridBag-LayoutGridBag-Layout
komplexer Layout-Managerkomplexer Layout-Manager detailliert konfigurierbardetailliert konfigurierbar lange Einarbeitungszeitlange Einarbeitungszeit viel Erfahrung nötigviel Erfahrung nötig
beste Resultatebeste Resultate
GridBagLayoutGridBagLayout
GitterrasterGitterraster Unterschiedliche Zellengrößen Unterschiedliche Zellengrößen
möglichmöglich Komponenten über mehrere ZellenKomponenten über mehrere Zellen
GridBag-LayoutGridBag-Layout
1.1. Instanz von GridBagLayout erzeugen Instanz von GridBagLayout erzeugen und bei der Oberfläche registrierenund bei der Oberfläche registrieren
2.2. Object GridBagConstraints für jede Object GridBagConstraints für jede Komponente erzeugen und über deren Komponente erzeugen und über deren Membervariablen konfigurierenMembervariablen konfigurieren
3.3. Registrieren beim Layout-ManagerRegistrieren beim Layout-ManagersetConstraints(Component, GridBagConstraints) setConstraints(Component, GridBagConstraints)
4.4. Komponente bei Oberfläche Komponente bei Oberfläche registrierenregistrierenadd()add()
GridBagConstraintsGridBagConstraints
public GridBagConstraints(public GridBagConstraints(intint gridx, gridx, intint gridy, gridy, intint gridwidth, gridwidth, intint gridheight, gridheight,doubledouble weightx, weightx, doubledouble
weighty, weighty, intint anchor, anchor, intint fill, fill, Insets Insets insets, insets, intint ipadx, ipadx, intint ipady) ipady)
Tipp!Tipp!
GridBagLayoutGridBagLayoutMenüleiste
--------------JButton, 3 Spalten-----------------
unbenutztJTextArea,
2 Spalten, 2 Zeilen JButton, SOUTHEAST
NULL-LayoutNULL-Layout
Kein LayoutmanagerKein Layoutmanager setLayout( null );setLayout( null );
Feste Positionierung der Feste Positionierung der KomponentenKomponenten
1.1. Erzeugen der KomponenteErzeugen der Komponente
2.2. Festlegung Position/GrößeFestlegung Position/GrößesetSize(); setLocation(); setBounds();setSize(); setLocation(); setBounds();
3.3. Registrieren der KomponenteRegistrieren der Komponente Fenstergröße setzen (kein pack())Fenstergröße setzen (kein pack())
JFrame,GridLayout
geschachtelte geschachtelte LayoutmanagerLayoutmanager
JPanel, BorderLayout
JPanel, GridLayout
JPanel, GridBagLayout
BewertungBewertung
Viel Mühe und ZeitViel Mühe und Zeit Viel Erfahrung nötigViel Erfahrung nötig FrustrationFrustration Abhängigkeiten komplexer LayoutsAbhängigkeiten komplexer Layouts
Unabdingbar für Unabdingbar für PlattformunabhängigkeitPlattformunabhängigkeit
Ein Muss für Java-ProgrammiererEin Muss für Java-Programmierer
QuellenQuellen
GoTo Java 2,GoTo Java 2, 2. Auflage, 2. Auflage,
Guido Krüger, Addison-WesleyGuido Krüger, Addison-Wesley Java professionell, Java professionell,
Gerhard Wilhelms, Markus Kopp, Gerhard Wilhelms, Markus Kopp, MITP-VerlagMITP-Verlag
http://java.sun.comhttp://java.sun.com http://www.java3d.orghttp://www.java3d.org