Anordnung der Komponenten
-
Layout-Manager:
-
bestimmen Anordnung der Komponenten
- Grundaufteilung je nach Typ des
Layout-Managers
- berücksichtigen z.T "Wunsch-Größen" der
einzelnen Komponenten
- zwingen z.T. Komponenten bestimmte Größen
auf
-
diverse Arten, u.a.
- FlowLayout
- GridLayout
- BorderLayout
-
Festlegen des LayoutManager-Typs
- als Argument im Konstruktor
- JPanel upperPanel = new
JPanel(new BorderLayout());
- nachträglich mit setLayout
- upperPanel.setLayout(new
FlowLayout());
-
FlowLayout:
-
Layout-Politik
- ordnet alle Komponenten hintereinander an
- belässt den Komponenten ihre natürliche
Größe
- Zeile voll → weitere Komponenten in neuer
Zeile
- alle Zeilen zentriert
- Default-Layout des JPanel
-
GridLayout:
-
Layout-Politik
- erzeugt rechteckiges Gitter aus nxm
Zellen
- alle Zellen gleich groß
- ordnet Komponenten der Reihe nach in das
Gitter ein
- zwingt Komponenten Zellengröße auf
-
Anzahl der Zellen aus Konstruktor
-
Beispielprogramm GridLayoutApplet
-
Text eines JLabel zentriert mit
- title = new JLabel("Such
was aus:", JLabel.CENTER);
-
BorderLayout:
-
Layout-Politik teilt Fläche in fünf Teilbereiche
- NORTH und SOUTH: Komponenten haben natürliche
Höhe und maximale Breite
- WEST und EAST: Komponenten haben natürliche
Breite und maximale Höhe
- CENTER: Komponente hat maximale Größe
- Default-Layout des ContentPane
-
Angabe des Bereiches als Argument beim add
- p.add(title,
BorderLayout.NORTH);
-
Beispielprogramm BorderLayoutApplet
-
Ränder:
-
Standard abhängig vom Komponententyp
- JButton hat Rand um
Text
- JLabel hat keinen
Rand
-
nachträgliches Hinzufügen von verschiedensten Rändern möglich,
z.B.
- einfacher Platz
- Umrandungen
- Beschriftungen
- Girlanden
-
Ränder implementieren Interface javax.swing.border.Border
- Border weiss, wie man einen Rand malt
- ein Objekt für alle gleichartigen Ränder aller
Komponenten
-
Rand wird erzeugt mit der Border-Fabrik
- Border simpleSpace =
BorderFactory.createEmptyBorder(5,5,5,5);
-
Komponente bekommt Rand mit setBorder
- title.setBorder(simpleSpace);
-
Beispielprogramm BorderLayoutWithBorderApplet
-
Kompliziertere Layouts:
- mehrere Komponenten in einem JPanel gruppieren
- jedes JPanel mit eigenem,
geeigneten Layout
- Ränder für jedes Panel und für jede Komponente
nach Bedarf
- vor der Programmierung Skizze mit gewünschter
Anordnung!
-
Beispielprogramm NiceLayoutApplet
-
Aufbau der Oberfläche
- Text und Button in eigenes JPanel upperPanel
- upperPanel und contentPane haben BorderLayout
- upperPanel in NORTH von contentPane → Höhe passt sich an Komponenten
an
- JComboBox in CENTER → nimmt gesamten restlichen Raum
ein
-
Aufgaben: