EneR: addActionListener(this)/addKeyListener(this):überschreiben sich?

Beitrag lesen

Hallo,
ich habe Dank Axel mein Programm zum laufen bekommen, und habe noch ein Problem. Erstmal die Funktion des Programms:
Zwei Figuren (a und l) bewegen sich jedesmal, wenn die entsprechende Taste gedrückt wird vorwärts.

Ich überlasse nun dem Benutzer eine Auswahl, wie häufig er klicken muss, mit einer Textarea und einen "LOS" button.
Allerdings funktioniert dannach das KeyEvent KeyReleased nicht mehr. mEine Erste Idee ist, das bei der Init() beide mit ...(this) initialisiert werden, und das sich gegenseitig überschreiben könnten. Allerdings wenn ich die Reihenfolge der initialisation ändere, ändert sich nichts(meiner Meinung Müsste dann nur das KEyEvent, allerdings nicht mehr der Button-Listener funktioniieren - Es ist aber nach wievor andersherum).
Hat jemand eine Idee woran das liegen könnte?

hier mein code:

  
import java.applet.Applet;  
import java.awt.Button;  
import java.awt.Color;  
import java.awt.Graphics;  
import java.awt.TextField;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.event.KeyEvent;  
import java.awt.event.KeyListener;  
  
public class Race extends Applet implements KeyListener, ActionListener {  
 private static final long serialVersionUID = -5951516822196894301L;  
  
 public int yA = 5;  
 public int yL = (95 + yA) + yA + 5 + 30;  
  
 public int score = (100 - 1);  
  
 private int aCounter = 0;  
 private int lCounter = 0;  
  
 private int repainted = 0;  
  
 public boolean aWinner = false;  
 public boolean lWinner = false;  
  
 TextField scoreInput = new TextField("20", 8);  
 public Button setScore = new Button("LOS");  
  
  
 public void init() {  
  this.setBackground(Color.white);  
  this.setBounds(0, 0, 1000, 1000);  
  addKeyListener(this);  
  
  add(scoreInput);  
  add(setScore);  
  setScore.addActionListener(this);  
 }  
 public void start() {  
 }  
 public void stop() {  
  
  System.exit(0);  
 }  
 public void keyReleased(KeyEvent e) {  
  //System.out.println("Key " + (int)e.getKeyChar() + " released!");  
  
  if (aCounter <= score && lCounter <= score && score >= 1) {  
   if ((int) e.getKeyChar() == 97) {  
    ++aCounter;  
   }  
   else if ((int) e.getKeyChar() == 108) {  
    ++lCounter;  
   }  
   repaint();  
  }  
  else {  
  }  
 }  
 public void paint(Graphics g) {  
  redrawSkater(g);  
  System.out.println("Repaint()");  
  ++repainted;  
 }  
 public void redrawSkater(Graphics g) {  
  g.drawString("I:" + repainted, 20, 10);  
  
  g.setColor(Color.red);  
  //Ziellinie  
  g.fillRect(score + 61, 0, 5, (240));  
  
  g.setColor(Color.yellow);  
  int i = 0;  
  int posI = -10;  
  while (i <= score) {  
   if (posI == 20) {  
    posI = -10;  
   }  
   g.drawString(i + "", i + 61, yL - 15 + posI);  
   g.drawLine(i + 61, yL - 120, i + 61, yL + 120);  
   posI += 10;  
   i += 20;  
  }  
  
  g.setColor(Color.black);  
  
  //Kopf  
  g.drawOval((12 + 5) + lCounter, 0 + yL, 24, 24);  
  //Arme  
  g.drawLine((0 + 5) + lCounter, 36 + yL, (48 + 5) + lCounter, 36 + yL);  
  //Koerper  
  g.drawLine((24 + 5) + lCounter, 24 + yL, (24 + 5) + lCounter, 70 + yL);  
  //Linkes Bein  
  g.drawLine((24 + 5) + lCounter, 70 + yL, (0 + 5) + lCounter, 95 + yL);  
  //Rechtes Bein  
  g.drawLine((24 + 5) + lCounter, 70 + yL, (48 + 5) + lCounter, 95 + yL);  
  //Skateboard  
  g.drawLine((53 + 5) + lCounter, 95 + yL, (-5 + 5) + lCounter, 95 + yL);  
  //-Raeder  
  //links  
  g.drawOval((0 + 5) + lCounter, 97 + yL, 5, 5);  
  //rechts  
  g.drawOval((45 + 5) + lCounter, 97 + yL, 5, 5);  
  
  //Kopf  
  g.drawOval((12 + 5) + aCounter, 0 + yA, 24, 24);  
  //Arme  
  g.drawLine((0 + 5) + aCounter, 36 + yA, (48 + 5) + aCounter, 36 + yA);  
  //Koerper  
  g.drawLine((24 + 5) + aCounter, 24 + yA, (24 + 5) + aCounter, 70 + yA);  
  //Linkes Bein  
  g.drawLine((24 + 5) + aCounter, 70 + yA, (0 + 5) + aCounter, 95 + yA);  
  //Rechtes Bein  
  g.drawLine((24 + 5) + aCounter, 70 + yA, (48 + 5) + aCounter, 95 + yA);  
  //Skateboard  
  g.drawLine((53 + 5) + aCounter, 95 + yA, (-5 + 5) + aCounter, 95 + yA);  
  //-Raeder  
  //links  
  g.drawOval((0 + 5) + aCounter, 97 + yA, 5, 5);  
  //rechts  
  g.drawOval((45 + 5) + aCounter, 97 + yA, 5, 5);  
  
 }  
 public void keyPressed(KeyEvent e) {  
 }  
 public void keyTyped(KeyEvent e) {  
 }  
 public void actionPerformed(ActionEvent e) {  
  
  String scoreString = scoreInput.getText();  
  try {  
   score = Integer.parseInt(scoreString);  
   scoreInput.setVisible(false);  
   setScore.setVisible(false);  
  }  
  catch (NumberFormatException ex) {  
   System.err.println("Invalid Number!");  
  }  
  repaint();  
 }  
}  

Ich hoffe ich habe den Sachverhalt gut erklärt, fällt mir immer etwas schwer - Sorry!

MfG EneR