PS-Trainer Java - Ereignisgesteuerte Programme
Homepage von PS-Trainer - Entwicklung - Java - an PS-Trainer

PS-Trainer PS-Trainer



Ereignisgesteuerte Programme:

Hinter diesem Stichwort verbergen sich die meisten in "Fenstern" ablaufenden Programme, im Gegensatz zu altertümlichen "Konsolen"-Programmen


Ein typisches Programm dieser modernen Art führt nach seinem Start die Initialisierung durch: Ein Fenster wird geöffnet, Menüs, Buttons und Paletten werden aufgebaut. Dann folgt die entscheidende - namensgebende - Phase: In der Ereignis-Warteschleife (event loop) wartet das Programm auf Ereignisse, typisch auf die Bedienung von Maus oder Tastatur.
Wenn ein derartiges Ereignis (event) eintritt, wird die Information darüber vom Betriebssystem an das Programm weitergegeben (soferne es den "Focus" der Aufmerksamkeit besitzt). Das Programm versucht normalerweise, diese Daten sinnvoll zu nutzen, d.h. die Art des Ereignisses zu analysieren, und daraus Handlungen (die Ausführung von Programmteilen) abzuleiten; Das Programm "reagiert" auf die durch die/den UserIn ausgelösten Ereignisse. Diese Event-Loop wird so lange ausgeführt, bis das Programm die Anweisung zum Beenden erhält (oder abstürzt). In diesem Fall wird meist noch "aufgeräumt", d.h. alle benutzten Resourcen freigegeben, dann das Programm beendet.



Java
Inhalt dieser Seite:

Buttons, maus-bedienbare Schaltflächen lösen Ereignisse aus
Action: Die Programmierung eigener Event-Handler: Programmteile zur Bearbeitung von Ereignissen
Checkboxes, maus-bedienbare Auswahlkästchen können Ereignisse auslösen
CheckboxGroups, auch bekannt als "Radiobuttons" bieten die Auswahl "Einer aus der Gruppe"
Aufgaben zu diesem Thema
 



Buttons:
So kündigen sie die Verwendung des Objekts "MyButton" der Klasse Button an. Die Klasse Button ist in java.awt enthalten.

Button MyButton;
Die Initialisierung eines Buttons:
Beachten sie, dass jeder Button mit default-Farben erzeugt wird, wenn sie das nicht anders anordnen. Das kann dazu führen, dass ihr Button vorhanden ist, man ihn jedoch (vor dem gleichfarbigen Hintergrund) nicht sieht.
Mit der add()-Methode fügen sie ihrem Applet diesen Button dazu.
public void init() {
setBackground(Color.white);
setForeground(Color.black);
MyButton = new Button("Buttext");
MyButton.setBackground(Color.lightGray);
MyButton.setForeground(Color.blue);
add(MyButton);
}
Übrigens: auch HTML kennt Buttons:



Action:
So "erfahren" sie von den Ereignissen:
Die Methode "action" erhält Informationen über Event und Object.
Klasse Event ist die Art des Ereignisses,
Object ist jenes Objekt, welches das Ereignis ausgelöst hat.
Analyse 1: Sie testen, ob das Event der gesuchten Klasse angehört (Operator instanceof).
Analyse 2: Sie testen, welcher von mehreren Buttons das Ereignis ausgelöst hat. Dazu holen sie sich mit Methode toString() den "Text" des Buttons in ein String-Objekt (hier: thetext).
Die 3 blau eingefärbten Zeilen enthalten den eigentlichen Event-Handler: Dieser Code wird genau und nur dann ausgeführt, wenn das gesuchte Ereignis eintritt.
Anm.: "this" bezeichnet das aktuelle Objekt, also das Applet, dessen gesamte aktuelle Grafik hier dem Objekt g zugewqiesen wird. "Aktuell" heisst hier: "Zum Zeitpunkt des Ereignisses" !!!

public boolean action(Event evt, Object arg) {
if (evt.target instanceof Button) {
String thetext=arg.toString();
if (thetext.equals("Buttext") ) {
Graphics g = this.getGraphics();
g.setColor(Color.yellow);
g.fillRect(0,0,50,50);

}
}
return false;
}

Das Muster eines Event-Handlers: Sie müssen zuerst das gesuchte Ereignis & Objekt herausfinden, dann den entsprechenden Code ausführen. Alle anderen Ereignisse und Objekte lassen sie ungenutzt "durchfallen".



Checkbox:
So kündigen sie die Verwendung des Objekts "MyCheck1" der Klasse Button an. Die Klasse Checkbox ist in java.awt enthalten.

Checkbox MyCheck1;
Initialisierung einer typischen Checkbox:
Farbgebung (wie oben "Buttons").
Zusätzlich: der Status jeder Checkbox kann nur entweder "true" oder "false" (=angekreuzt ober leer) sein.
Tip: In einer Gruppe von Checkboxen können beliebig viele davon leer oder angekreuzt sein, und zwar vollkommen unabhängig voneinander.
public void init() {
setBackground(Color.white);
setForeground(Color.blue);
MyCheck1 = new CheckBox("CheckText1");
MyCheck1.setState(false);
MyCheck1.setForeground(Color.black);
add MyCheck1;
}
Programmierung der Event-Handler:
Sie müssen wie bereits gezeigt das gesuchte Event herausfiltern, und bei Zutreffen entsprechenden Code auslösen.
Meist wird durch das Anklicken keine Programm-Reaktion ausgelöst, man wartet eher, bis die/der UserIn sämtliche vorhandenen Checkboxes bearbeitet hat, und bietet als gemeinsamen Abschluss einen Button (s.o.) an.

public boolean action(Event evt, Object arg) {
if (evt.target instanceof Checkbox) {
String thetext=arg.toString();
if (thetext.equals("true") ) {
setBackground(Color.blue);
}
else {
setBackground(Color.white);
}
}
return false; }

Übrigens: Auch HTML kennt Checkboxes:

Welche Betriebssysteme kenne sie ?
DOS Windows
Linux Andere



CheckboxGroup:
So kündigen sie die Verwendung des Objekts "MyGroup" der Klasse CheckboxGroup an.

CheckboxGroup MyGroup;
Dieses Objekt umfasst normalerweise eine Gruppe von "Radiobuttons": Von diesen ist jeweils genau einer eingeschaltet, alle anderen ausgeschaltet.
Achten sie bei der Initialisierung darauf, alle Checkboxes einer Gruppe mit Ausnahme von genau einer Checkbox abzuschalten ("false").
Als 2. Argument des Konstruktors übergeben sie die CheckboxGroup, zu der eine Checkbox gehört, als 3. Element die Voreinstellung.
Vergessen sie nicht, erzeugte Objekte zu ihrem Applet hinzuzufügen.
public void init() {
MyGroup=new CheckboxGroup();
grau = new Checkbox ("grau",MyGroup,false);
weiss = new Checkbox ("weiss",MyGroup,true);
grau.setForeground(Color.black);
weiss.setForeground(Color.black);
add(grau);
add(weiss);
}
Programmierung der Event-Handler:
Sie müssen wie bereits gezeigt das gesuchte Event herausfiltern, und bei Zutreffen entsprechenden Code auslösen.
Tip: Mit der String-Methode indexOf() erhalten sie die Position eines substrings in einem String. Position 0 ist das erste Zeichen, usw. Das Ergebnis -1 zeigt an, dass der gesuchte substring nicht gefunden wurde.

public boolean action(Event evt, Object arg) {
if (evt.target instanceof Checkbox) {
Checkbox CB_A=MyGroup.getSelectedCheckbox();
String thetext=CB_A.toString();
if (thetext.indexOf("grau")!=-1) {
setBackground(Color.lightGray);
}
if (thetext.indexOf("weiss")!=-1) {
setBackground(Color.white);
}
}
}

Übrigens: Auch HTML kennt Radiobuttons:

Über welche Java-Kenntnisse verfügen sie ?
Keine Mittlere
AnfängerIn Profi



JavaAufgaben:
Minimal-Anforderung (1) Erzeugen sie ein Applet mit einem Button, der ein beliebiges, jedoch eindeutig sichtbares Ereignis auslöst.
(2) Erzeugen sie ein Applet mit 2 Buttons, welche die Hintergrundfarbe des Applets umschalten.
Reguläre Anforderung Programmieren sie ein Applet mit einer CheckboxGroup und einem Button:
Mit Hilfe der Checkboxen wird eine Farbe ausgewählt, mit dem Button wird sie als Hintergrund des Applets eingestellt.
Geben sie nur ein Applet ab, je nach erreichtem Niveau.
Profi-Themen Erweitern sie bereits vorhandene Projekte durch interaktive Elemente wie Buttons, Checkboxes und CheckboxGroups.



Homepage von PS-Trainer - Entwicklung - Java - an PS-Trainer

Geocities