Tutorials

Hier finden Sie Beispiele für

Eventhandling der Buttons (Anwendung und Implementierung eines ButtonListeners)

Das folgende Tutorial bietet eine mögliche Implementierung der Eventbehandlung (≈ Reaktion auf ein bestimmtes Ereignis) der vier Knöpfe eines Nxt-Bausteins an. Wir behelfen uns dazu einem sogenanntem Listener-Objekts.

Sind vier Objekte vom Objekttyp Button, welche wir nun zunächst einmal näher betrachten möchten. Jedem Objekt der Klasse Button kann durch die Methode addButtonListener ein ButtonListener zugewiesen werden, der auf bestimmte Ereignise dieses Knopfes lauscht:

Erstellen einer Klasse, welche das Interface ButtonListener implementiert:

 public class myButtonListener implements ButtonListener {
   @override
   public void buttonPressed(Button b) {
     // wird ausgefuehrt, wenn Button b gedrueckt wird
   }
   @override
   public void buttonReleased(Button b) {
     // wird ausgefuehrt, wenn Button b losgelassen wird
   }
 } 

Zur Ausführung dieses Prozesses muss nun ein Objekt dieses Typs initialisiert werden und den entsprechenden Knöpfen zugewiesen werden. Dies geschieht mit der Methode addButtonListener. Im folgenden Beispiel werden allen vier oben erwähnten Buttons der selbe ButtonListener vom Typ myButtonListener zugewiesen:

Zuweisung des myButtonListener:

 public static void main(String[] args) {
   myButtonListener mListener = new myButtonListener();
   Button.ENTER.addButtonListener(mListener);
   Button.ESCAPE.addButtonListener(mListener);
   Button.LEFT.addButtonListener(mListener);
   Button.RIGHT.addButtonListener(mListener);
   // sobald einer dieser Knoepfe gedrueckt wird,
   // wird die entsprechende Methode innerhalb des
   // Listeners ausgefuehrt.
   // … hier geht die main-Methode weiter 

Bisher werden bei jedem Knopf die Methoden buttonPressed bzw. buttonReleased des nun initialisierten myButtonListener-Objekts ausgeführt, sobald das ensprechende Ereignis eintritt. Zur spezialisierung der Aktionen, die die einzelnen Knöpfe auslösen sollen, wird in diesen Methoden zunächst der entsprechende Knopf identifiziert und ihm anschließend eine entsprechende Aktion zugewiesen.

Spezialisierung des eigenen ButtonListener-Objekts:

 public class myButtonListener implements ButtonListener {
   @override
   public void buttonPressed(Button b) {
     switch(b.getId()) {
       case Button.ID_ENTER:
         enterPressedMethode();
         break;
       case Button.ID_ESCAPE:
         escapePressedMethode();
         break;
       case Button.ID_LEFT();
         leftPressedMethode();
         break;
       case Button.ID_RIGHT();
         rightPressedMethode();
         break;
     }
   }
   @override
   public void buttonReleased(Button b) {
     switch(b.getId()) {
       case Button.ID_ENTER:
         enterReleasedMethode();
         break;
       case Button.ID_ESCAPE:
         escapeReleasedMethode();
         break;
       case Button.ID_LEFT();
         leftReleasedMethode();
         break;
       case Button.ID_RIGHT();
         rightReleasedMethode();
         break;
     }
   }
 }