Um nun die beiden vorher beschriebenen Elemente (Text&Grafik) und auch die Elemente Bilder und Benutzerschnittstellen so in einem Fenster (Container) darzustellen, daß sie sich nicht überlagern und damit stören, stellt das AWT einen Layout-Manager zur Verfügung.
Mit dem Layout-Managers kann jedem Element an einer beliebigen Position
im Container ein Breich zugewiesen werden.
Diese Bereichzuweisung findet über die Erzeugung eines Fensters für die jeweiligen Elemente im Container statt.
Folgende Layouts stellte JAVA zum Anorden der Fenster zur Verfügung:
Beim Fließ-Layout werden die Elemente solange centriert
nebeneinander angeordnet, bis die Zeile gefüllt ist und dann in die
nächste Zeile verzweigt. Hierbei kann noch angegeben werden, ob die
Elemente
rechts (RIGHT),
links (LEFT) oder
mittig (CENTER) angeordnet werden sollen.
Beim Rahmen-Layout wird das Fenster gemäß der Eingabe
des Programmierers
oben (NORTH),
unten (SOUTH),
rechts (WEST),
links (EAST) oder
in der Mitte (CENTER) in dem Container positioniert.
Beim Karten-Layout kann man die verschiedenen Elemente wie bei Windows 95 hintereinander legen und sozusagen durch sie hindurch blättern, d.h. die einzelnen Container werden übereinander gelegt und nur derjenige, der gezeigt werden soll, wird mit der paint-Methode gezeichnet.
Beim Gitter-Layout wird das eigentliche Fenster einer Tabelle ähnlich in ein Gitternetz aufgeteilt, mit n Splaten und m Zeilen. Man kann nun genau bestimmen, welches Elementfesnter in welches Feld kommen soll.
Beim erweiterten Gitter-Layout können Komponenten verschiedener
Größe in dem Container plaziert werden. Die Komponenten können
hierbei auch über mehere Felder gehen und nicht mehr wie im normalen
Gitter-Layout nur über eines.
Die Anzahl der Felder im Gitternetz wird automatisch anhand der Größe
und Position der einzelnen Komponentenfenster vom Programm berechnet.
Zurück zum Inhaltsverzeichnis
Buttons werden mittels
add( new Button("Buttonname"))
erzeugt.
Die Event-Behandlung von Buttons erfolgt automatisch über die Event-Methode des Buttons:
public boolean action(Event evt, Object arg)
{ if (arg.equals("Buttonname"))....
.
.
}
Um graphische Objekte in einem Container darzustellen, muß
man diese in einer eigenen Canvas-Klasse definieren.
In der Canvas-Klasse wird beschrieben, wie das Objekt auf dem Bildschirm
dargestellt werden soll.
Das erzeugen eines Canvas geschieht in der aufrufenden Klasse mittels:
add(new Canvas)
Dabei ist zu beachten, daß man dem Canvas im Container auch eine
Größe zuweist, da die Größe automatisch auf 0 gesetzt
wird und das graphische Objekt dann nicht dargestellt wird.
Die Zuweisung der Größe kann entweder in der aufrufenden Klasse
des Programmes mit Name.resize(x,y) erfolgen oder in der Canvas-Klasse
selber mittels einer Größendefintion.
Die Größendefinition in der Canvas-Klasse sieht dann wie folgt aus:
Modifikation des Konstruktors
public Canvasname (Dimension prefSize)
}
this.prefSize = prefSize;
}
Die Klasse wird nun mit einer Größenübergabe aufgerufen. Diese kann die Größe des Containers selber sein, die man mit size() abfragen und dann in die Canvas-Klasse übergeben kann.
Angabe der Größe des Canvas:
public Dimension preferredSize()
{
return prefSize;
}
Angabe der minimalen Größe:
public Dimension minimumSize()
{
return prefSize;
}
Ein Beispiel zum Obigen:
Der Source-Code.
Markierungsfelder dienen der Mehrfachauswahl von Optionen und brauchen daher keinen Startinitialisierung.
Syntax eines Markierungsfeldes:
Objektname.add(Name = new Checkbox("Bezeichnung"));
Der Objektname eines Markierungsfeldes ist vom Typ Panel.
Um das Markierungsfeld eindeutig referenzieren zu können muß
ihm nun ein eindeutiger Bezeichner zugewiesen werden.
Die Event-Behandlung von Markierungsfeldern findet über die event-Methode
statt. Dabei steht in dem target - Feld des Markierungsfeldes, ob
die Option ausgewählt wurde oder nicht. Das target - Feld wird automatisch
angelgt und gehört zur Klasse des Markierungsfeldes.
Die Eventbehandlung findet über folgende Syntax statt:
public boolean action(Event evt, Object arg)
{ if (evt.target.equals(Name) ....
.
.
else return super.action(evt, arg);
return true;
}
Ein kleines Beispiel:
Der Source-Code.
Radio-Buttons werden mit Hilfe des Objekttyps CheckboxGroup erzeugt.
Die einzelne Buttons in einer CheckboxGroup selber werden wie die Markierungsfgelder
vom Objekttyp Checkbox abgeleitet.
Da bei einer Gruppe von Radio-Buttons nur einer zur zeit selektierbar ist,
muß der Startbuttons mittels TRUE initialisiert werden.
Die Syntax von Radio-Buttons:
Panel Panelname = new Panel();
CheckboxGroup Checkboxname = new CheckboxGroup();
Panelname.add(Variablenname = new Checkbox("Bezeichnung",
Checkboxname, [False/True]));
.
.
.
Die Event-Behandlung:
Die Event - Behandlung von Radio-Buttons entspricht der Behandlungsroutine
von Markierungsfeldern.
public boolean action(Event evt, Object arg)
{
if (evt.target.equals(Variablenname)) ....;
.
.
}
Ein Beispiel:
Der Source-Code.
... [ Seminar WWW und JAVA]... [Applets und das Java AWT] ... [Zum Anfang der Seite] ... [Zur nächsten Seite] ...