Java AWT Buttons: Ereignisse, Listen, Checkboxen & Radio-Buttons
Buttons in Java: Erstellen und Ereignisse behandeln
Button erstellen: Mit dem Operator new wird ein Objekt der Klasse Button erzeugt, dem eine Beschriftung übergeben wird. Die Schaltfläche wird im Applet angezeigt, sobald sie dem Fenster hinzugefügt wird. Sie gibt außerdem ein Ereignis aus, wenn sie betätigt wird.
Button-Ereignisse
Jeder Klick auf eine Schaltfläche erzeugt ein Ereignis, ebenso wie ein Klick mit der Maustaste. Die Ereignisse der Schaltflächen können über die Methode action() verarbeitet werden:
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Button)
System.out.println((String) obj);
else
System.out.println("Event ohne Button");
}Die Unterscheidung zwischen mehreren Schaltflächen erfolgt über das Zielobjekt des Ereignisses (evt.target), das mit den gesetzten Button-Objekten verglichen wird:
import java.net.*;
import java.applet.Applet;
public class Button extends Applet {
Button b1, b2, b3;
public void init() {
b1 = new Button("Button B1");
b2 = new Button("Button B2");
b3 = new Button("Button B3");
this.add(b1);
this.add(b2);
this.add(b3);
}
public boolean action(Event evt, Object obj) {
if (evt.target.equals(b1))
System.out.println("Sie drückten den Knopf B1");
if (evt.target.equals(b2))
System.out.println("Taste gedrückt wurde: B2");
if (evt.target.equals(b3))
System.out.println("Taste gedrückt wurde: B3");
return true;
}
}Auswahlliste (Choice)
Eine Auswahlliste (Choice) ermöglicht es, schnell Elemente aus einer Liste auszuwählen. Sie kann beispielsweise zur Auswahl einer Farbe verwendet werden:
import java.net.*;
import java.applet.Applet;
public class AuswahlButton extends Applet {
Choice selector;
public void init() {
selector = new Choice();
selector.addItem("Rot");
selector.addItem("Grün");
selector.addItem("Blau");
add(selector);
}
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Choice) {
String color = (String) obj;
System.out.println("Die gewählte Farbe ist: " + color);
}
return true;
}
}Die Methode action() liefert im Argument obj des Ereignisses den gewählten Eintrag zurück. So kann die Auswahl direkt verarbeitet werden.
Checkboxen
Checkboxen werden häufig als Schaltflächen mit zwei Zuständen verwendet. Sie liefern true, wenn das Feld ausgewählt ist, und false in allen anderen Fällen. Der Zustand kann im Argument obj des Ereignisses oder über die Methoden getLabel() und getState() des Checkbox-Objekts abgefragt werden.
import java.net.*;
import java.applet.Applet;
public class BotonComprobacion extends Applet {
Checkbox fill;
public void init() {
fill = new Checkbox("Fill");
add(fill);
}
public boolean action(Event evt, Object obj) {
if (evt.target instanceof Checkbox)
System.out.println("CheckBox: " + evt.arg.toString());
return true;
}
}Optionsfelder (CheckboxGroup)
Mit einer CheckboxGroup werden Checkboxen zu Optionsfeldern gruppiert. Dabei ist immer nur eine Schaltfläche der Gruppe aktiv:
import java.net.*;
import java.applet.Applet;
public class BotonRadio extends Applet {
CheckboxGroup radio;
public void init() {
radio = new CheckboxGroup();
add(new Checkbox("Erster", radio, true));
add(new Checkbox("Zweiter", radio, false));
add(new Checkbox("Dritter", radio, false));
}
}Im Beispiel ist stets genau eine Schaltfläche aktiv, da die Gruppe die Auswahl automatisch verwaltet.
Eigenständige Buttons (Self-Contained)
Die objektorientierte Arbeitsweise von Java erlaubt es, vollständig getrennte Schaltflächen zu erstellen. Dabei wird die Ereignisbehandlung in die Klasse der Schaltfläche selbst eingebaut. So lassen sich benutzerdefinierte Schaltflächen hinzufügen, ohne sich um die Ereignisse im Applet kümmern zu müssen:
import java.net.*;
import java.applet.Applet;
class OKButton extends Button {
public OKButton() {
setLabel("OK");
}
public boolean action(Event evt, Object obj) {
System.out.println("OK-Button gedrückt");
return true;
}
}
public class BotonAuto extends Applet {
OKButton ok;
public void init() {
ok = new OKButton();
add(ok);
}
}Die Methode action() in der Klasse OKButton behandelt die Ereignisse dieser Schaltfläche. Hat das Applet weitere Objekte, könnte es ebenfalls eine eigene Methode action() verwenden, um deren Ereignisse zu behandeln.