EneR: KeyEvent

Hallo,

Ich habe ja mein Problem schon einmal geschildert, ich möchte herausfinden, welche Taste, bzw ob der der Benutzer eine TAste Drückt.
ICh habe dazu schon einigen Schönen Quelltext gefunden, und auf meine Bedürfnisse zugeschnitten. Allerdings bekomme ich folgenden Script nicht so hin, das ich eine "public char KeyEvent () {}" (wie nennt man sowas nochmal *peinlich*) hab die den gedrückten Buchstaben zurückgibt?

  
  
import java.applet.*;  
import java.awt.*;  
import java.awt.event.*;  
  
public class Main extends Applet implements Runnable, KeyListener, MouseListener, MouseMotionListener  
{  
 private int speed;  
  
 int currentLine;  
  
 // Spielthread  
 private Thread th;  
  
 // Variablen für die Doppelpufferung  
 private Image dbImage;  
 private Graphics dbg;  
  
 public void init()  
 {  
  setBackground(Color.blue);  
  
  currentLine = 10;  
  
  addKeyListener(this);  
 }  
  
 public void start()  
 {  
  // Schaffen eines neuen Threads, in dem das Spiel läuft  
  th = new Thread(this);  
  // Starten des Threads  
  th.start ();  
 }  
  
 public void stop()  
 {  
  // Thread stoppen  
  th.stop();  
  // Thread auf null setzen  
  th = null;  
 }  
  
 public void keyPressed(KeyEvent e)  
 {  
  getGraphics().drawString("User pressed key " + e.getKeyChar(), 10, currentLine);  
  currentLine+=20;  
 }  
  
 public /*char*/void keyReleased(KeyEvent e)  
 {  
  getGraphics().drawString("User released key " + e.getKeyChar(), 10, currentLine);  
  char Answer = e.getKeyChar();  
  currentLine+=20;  
  //return Answer;  
 }  
  
 public void keyTyped(KeyEvent e)  
 {  
  
 }  
  
  
  
 public void run()  
 {  
  // Solange true ist läuft der Thread weiter  
  while (true)  
  {  
    paint(getGraphics());  
  }  
  
 }  
  
 /** Update - Methode, Realisierung der Doppelpufferung zur Reduzierung des Bildschirmflackerns */  
 public void update (Graphics g)  
 {  
  // no double buffering  
 }  
  
  
 public void paint(Graphics g)  
 {  
  if(currentLine >380)  
  {  
   g.setColor(Color.blue);  
   g.fillRect(0, 0, 300, 300);  
   currentLine = 10;  
  }  
  
  g.setColor(Color.yellow);  
  }  
}  

Bitte um etwas Nachsicht, ich bin erst 14 *g*

Frohe Weihnachten:
Ener

  1. Hallo,

    Ich habe ja mein Problem schon einmal geschildert, ich möchte herausfinden, welche Taste, bzw ob der der Benutzer eine TAste Drückt.

    Was willst du machen, wenn das passiert?

    ICh habe dazu schon einigen Schönen Quelltext gefunden, und auf meine Bedürfnisse zugeschnitten. Allerdings bekomme ich folgenden Script

    Das ist kein Skript, sondern ein Programm in Form eines Applets.

    nicht so hin, das ich eine "public char KeyEvent () {}" (wie nennt man sowas nochmal *peinlich*) hab die den gedrückten Buchstaben zurückgibt?

    Das, was du da schreibst, nennt sich Methode.

    Aber: Was man von der Java-API unter diesem Namen ("KeyEvent") kennt,
    ist eine Klasse. Ein Objekt dieser Klasse wird z.B. an die untenstehenden
    KeyListener-Methoden übergeben. Darin befinden sich Informationen über
    die betroffene Taste usw.

    Weil das eine Methode ist, die von der Java-API aufgerufen wird und weil
    diese außerdem genau so im Interface KeyListener definiert ist, kannst
    (und willst) du gar nichts am Rückgabewert ändern.

    Du kannst dir einfach die gedrückte Taste merken oder direkt auf den
    Tastendruck reagieren. (In den Methode keyPressed(), z.B.)
    Hierzu läßt du dir von dem KeyEvent-Objekt den Key-Code bzw. den Key-Char
    geben, fragst ab ob es der richtige ist und machst dann etwas als Reaktion
    darauf.

    Bitte um etwas Nachsicht, ich bin erst 14 *g*

    Wenn ich mir deinen Code anschaue, habe ich eher das Gefühl, daß du nie
    ein Java-Buch (von vorne) gelesen hast. Das solltest du schleunigst
    nachholen. Mit trial-and-error kommt man in manchen Programmierensprachen
    weit. In Java aber eher nicht. Beschäftige dich mit den grundlegenden
    Konzepten, wie z.B. auch Klassen, Objekten, Methoden, Schnittstellen,
    Listenern. Erst danach würde ich sehr langsam anfangen AWT oder Swing
    zu verstehen.

    Falls du kein Java-Buch hast, findest du mind. 2 kostenlose im Internet:

    Das Javabuch
    Java ist auch eine Insel

    Gruß
    Slyh