Einführung - Grafische Oberflächen mit AWT Grafische Elemente erzeugen und anordnen Grafische Elemente in Beispielen Grafische Elemente anordnen - Layoutmanager Jetzt soll auch was passieren - Ereignisbehandlung Ereignisbehandlung in Beispielen
Layoutmanager sind Objekte in Java, die sich um die Anordnung der Objekte auf der Programmoberfläche kümmern. Sie bestimmen die Position und die Größe der darzustellenden Objekte. Bei Veränderungen am Programmfenster aktualisieren sie diese.
Nachfolgend werden 5 Grafikobjekte erzeugt und mit verschiedenen Layoutmanagern verwaltet.
01 | import java.awt.*; |
02 | |
03 | /** |
04 | Mein erstes Javaprogramm mit grafischer Oberfläche |
05 | */ |
06 | |
07 | public class GrafischeOberflaeche04a extends Frame { |
08 | |
09 | Label lbAufgabe = new Label("Aufgabe :"); |
10 | TextField tfEingabe = new TextField("Drück mal die"); |
11 | Button buTaste = new Button("Taste"); |
12 | Checkbox cbDaten = new Checkbox("Einverstanden"); |
13 | TextArea taText = new TextArea("",5,10,TextArea.SCROLLBARS_VERTICAL_ONLY); |
14 | |
15 | FlowLayout flAnordnung = new FlowLayout(); |
16 | |
17 | public GrafischeOberflaeche04a() { |
18 | this.setSize(400,300); |
19 | this.setTitle("Ich bin eine grafische Oberfläche"); |
20 | this.setVisible(true); |
21 | |
22 | this.setLayout(flAnordnung); |
23 | |
24 | this.add(lbAufgabe); |
25 | this.add(tfEingabe); |
26 | this.add(buTaste); |
27 | this.add(cbDaten); |
28 | this.add(taText); |
29 | } |
30 | |
31 | public static void main(String[] args) { |
32 | GrafischeOberflaeche04a programm = new GrafischeOberflaeche04a(); |
33 | } |
34 | } |
35 | |
36 |
Quelltext: GrafischeOberflaeche04a.java
Zeile 09-13 | Es werden 5 verschiedene grafische Objekte deklariert (vereinbart) und instanziiert (erzeugt). |
Zeile 15 | In dieser Zeile wird ein Layoutmanger flAnordnung vom Typ FlowLayout erzeugt. |
Zeile 22 | Der in Zeile 15 erzeugte Layoutmanger wird der Anwendung zugeordnet. |
Zeile 24-28 | Mit der Methode add werden die grafischen Elemente zum Layout des Programms hinzugefügt. |
Der Layoutmanager "FlowLayout" ordnet Elemente wie Buchstaben in einer Textverarbeitung an. Solange der Platz
reicht, werden die Elemente nebeneinander angeordnet. Reicht der Platz nicht mehr aus, wird das nächste Element
in einer neuen Zeile positioniert.
Ändert man nach dem Programmstart die Größe des Programmfensters, ordnet der Layoutmanager die Elemente
entsprechend der neuen Fenstergröße neu an.
Und so sieht das Programm mit dem FlowLayout aus. Zur Animation bitte anklicken.
Der Layoutmanager "GridLayout" ordnet die Elemente tabellarisch an.
Im folgenden Programmausschnitt sind nur die geänderten Zeilen dargestellt.
Der Konstruktor in Zeile 15 erzeugt ein GridLayout, welches seine Elemente in einer Tabelle mit 3 Zeilen
mit jeweils zwei Spalten anordnet.
Merke :
Der Layoutmanager GridLayout ignoriert Größenangaben der Elemente. Die Größe der Elemente wird den Zellgrößen der Tabelle
angepasst.
15 | GridLayout glAnordnung = new GridLayout(3,2); |
22 | this.setLayout(glAnordnung); |
Quelltext: GrafischeOberflaeche04b.java
Und so sieht das Programm mit dem GridLayout aus. Zur Animation bitte anklicken.
Der Layoutmanager "BorderLayout" dürfte der bekannteste sein. Die meisten Standardprogramme benutzen ihn.
Die Oberfläche wird in 5 Bereiche geteilt. Die äußeren haben Bezeichnungen nach Himmelsrichtungen.
In Standardprogrammen enthält der Bereich NORTH die Menüs, der Bereich SOUTH die Statusleiste, der Bereich CENTER
den Arbeitsbereich und die Bereiche WEST bzw. EAST nehmen oft weitere Menüs oder Dialogfelder auf.
Im folgenden Programmausschitt sind nur die geänderten Zeilen dargestellt.
Neu ist, dass beim Hinzufügen der Elemente zum Layout des Programms der Bereich angegeben werden muss, in den
das Element eingefügt werden soll.
Wie bei GridLayout werden Größenangaben der Elemente ignoriert.
15 | BorderLayout blAnordnung = new BorderLayout(); |
22 | this.setLayout(glAnordnung); |
24 | this.add(lbAufgabe, BorderLayout.NORTH); |
25 | this.add(tfEingabe, BorderLayout.SOUTH); |
26 | this.add(buTaste, BorderLayout.WEST); |
27 | this.add(cbDaten, BorderLayout.EAST); |
28 | this.add(taText, BorderLayout.CENTER); |
Quelltext: GrafischeOberflaeche04c.java
Und so sieht das Programm mit dem BorderLayout aus. Zur Animation bitte anklicken.
Die reservierte Anweisung null bezeichnet keinen Layoutmanager. Mit diesem Schlüsselwort
wird der Oberfläche mitgeteilt, dass kein Layoutmanager verwendet werden soll.
Der Programmierer muss für jedes Element die Position und die Größe festlegen. Ohne geeignete Anweisungen
wirkt sich eine Änderung der Fenstergröße nicht auf die Anordnung der Elemente aus.
15 | //Ereugung des Layoutmanagers entfällt |
22 | this.setLayout(null); |
23 | |
24 | lbAufgabe.setBounds(10,30,50,20); |
25 | this.add(lbAufgabe); |
26 | |
27 | tfEingabe.setBounds(70,30,100,20); |
28 | this.add(tfEingabe); |
29 | |
30 | buTaste.setBounds(180,30,70,20); |
31 | this.add(buTaste); |
32 | |
33 | cbDaten.setBounds(10,60,100,20); |
34 | this.add(cbDaten); |
35 | |
36 | taText.setBounds(10,90,300,180); |
37 | this.add(taText); |
Quelltext: GrafischeOberflaeche04d.java
Und so sieht das Programm ohne Layoutmanager aus. Zur Animation bitte anklicken.
Einführung - Grafische Oberflächen mit AWT Grafische Elemente erzeugen und anordnen Grafische Elemente in Beispielen Grafische Elemente anordnen - Layoutmanager Jetzt soll auch was passieren - Ereignisbehandlung Ereignisbehandlung in Beispielen