270 likes | 415 Vues
Java 3D. -Seminar-. Java Layout Manager (JLM) Marc Dziadek. Begriffsdefinition. Oberfläche 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.
E N D
Java 3D -Seminar- Java Layout Manager (JLM) Marc Dziadek
Begriffsdefinition • Oberfläche • 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 • 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 registrierenadd(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-ManagersetConstraints(Component, GridBagConstraints) • Komponente bei Oberfläche registrierenadd()
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!
Menüleiste --------------JButton, 3 Spalten----------------- JTextArea, 2 Spalten, 2 Zeilen unbenutzt GridBagLayout JButton, SOUTHEAST
NULL-Layout • Kein Layoutmanager • setLayout( null ); • Feste Positionierung der Komponenten • Erzeugen der Komponente • Festlegung Position/GrößesetSize(); setLocation(); setBounds(); • Registrieren der Komponente • Fenstergröße setzen (kein pack())
JFrame,GridLayout JPanel, GridBagLayout JPanel, BorderLayout JPanel, GridLayout geschachtelte Layoutmanager
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