Die Benutzerschnittstellen des AWT


... [ Seminar WWW und JAVA]... [Applets und das Java AWT] ... [Zur nächsten Seite] ...
Übersicht dieser Seite:


Der Layout-Manager

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 & Canvas (unter Verwendung des FlowLayouts)

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.

Zurück zum Inhaltsverzeichnis


Markierungsfelder (Verwendung des Borderlayouts)

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.

Zurück zum Inhaltsverzeichnis


Radio-Buttons

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.

Zurück zum Inhaltsverzeichnis


... [ Seminar WWW und JAVA]... [Applets und das Java AWT] ... [Zum Anfang der Seite] ... [Zur nächsten Seite] ...