Turtlegrafik mit Java

HomeAufgabenDruckenJava-Online

Tastaturevents


Bei Applikationen mit einer grafischen Benutzeroberfläche (GUI) wird der Programmablauf in der Regel durch Ereignisse (Events) gesteuert. Jede Benutzeraktion mit der Maus oder mit der Tastatur löst einen Event aus. Will man einen Tastendruck als Event abfangen, so erstellt man eine KeyAdapter-Klasse. Diese enthält die Methode keyPressed(), die beim Drücken einer Taste aufgerufen wird. Mit der Methode getKeyCode() kann zusätzlich bestimmt werden, welche Taste gedrückt wurde. Damit die Tastaturevents in einem Turtlefenster aktiviert werden, muss mit der Methode addKeyListener() der Adapter registriert werden.


Im ersten Beispiel zeichnet die Turtle beim Drücken einer beliebigen Taste eine Treppenstufe.

 

 


// Tu23.java

import ch.aplu.turtle.*;
import java.awt.event.*;

public class Tu23 extends Turtle
{
  public Tu23()
  {
    hideTurtle();
    addKeyListener(new KeyAdapter()
    {
      public void keyPressed(KeyEvent evt)
      {
        step();
      }
    });
    addStatusBar(20);
    setStatusText("Press any key!");
  }

  private void step()
  {
    forward(20);
    right(90);
    forward(20);
    left(90);
  }

  public static void main(String[] args)
  {
    new Tu23();
  }
}
   


Erklärungen zum Programmcode:

import java.awt.event.*;
Damit stehen die Klasse Keyevent und KeyAdapter zur Verfügung
addKeyListener(new KeyAdapter())
Der KeyListener wird im Turtlefenster aktiviert
void keyPressed(KeyEvent evt) Diese Methode wird automatisch aufgerufen, wenn eine Taste gedrückt wird

 

Im zweiten Beispiel kann die Turtle mit den Cursor-Tasten nach links, rechts, oben bzw. nach unten bewegt werden. Die Methode getKeyCode() liefert den nummerischen Code der gedrückten Taste. Bei den Cursortasten sind diese Codes als Konstanten der Klasse KeyEvent VK_LEFT, VK_UP, VK_RIGHT und VK_DOWN verfügbar.

 

// Tu24.java

import ch.aplu.turtle.*;
import java.awt.event.*;

public class Tu24 extends Turtle
{

  public Tu24()
  {
    addStatusBar(20);
    setStatusText("Use cursor keys to move me!");
    speed(-1);

    addKeyListener(new KeyAdapter()
    {
      public void keyPressed(KeyEvent evt)
      {
        int step = 10;
        int keyCode = evt.getKeyCode();
        switch (keyCode)
        {
          case KeyEvent.VK_LEFT :
            setHeading(-90);
            forward(step);
            break;

          case KeyEvent.VK_RIGHT :
            setHeading(90);
            forward(step);
            break;

          case KeyEvent.VK_UP :
            setHeading(0);
            forward(step);
            break;

          case KeyEvent.VK_DOWN :
            setHeading(180);
            forward(step);
            break;
        }
      }
    });
  }

  public static void main(String[] args)
  {
    new Tu24();
  }
}
 


Erklärungen zum Programmcode:
int keyCode = evt.getKeyCode(); Der Code der gedrückten Taste wird in die Variablen keyCode gespeichert

 

Aufgaben