Java Layout Manager (JLM) Marc Dziadek Java 3D -Seminar- Java Layout Manager (JLM) Marc Dziadek
Begriffsdefinition Oberfläche Komponente Anmerkung Container für Dialogelemente Registrierung der Layout-Manager Komponente 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 JLM instanziieren Swing: contentPane JLM instanziieren JLM der Oberfläche zuweisen Oberflächenmethode setLayout() Optional: Konfiguration des LM Abstände Ausrichtung Etc.
Funktionsweise 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 Komponenten-registrierung entscheidend (Ausnahmen!) 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 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) 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----------------- unbenutzt JTextArea, 2 Spalten, 2 Zeilen JButton, SOUTHEAST
NULL-Layout Kein Layoutmanager Feste Positionierung der Komponenten setLayout( null ); Feste Positionierung der Komponenten 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, GridBagLayout JPanel, GridLayout
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, MITP-Verlag http://java.sun.com http://www.java3d.org