KeyListener will nicht reagieren

Status
Nicht offen für weitere Antworten.
H

Hasorko

Gast
So. Also ich habe also ein problem mit KeyListener. Im voraus es tut mir leid mein quelltext is ne Qual, da ich viel Variablen nicht ausreichend benannt habe. Naja wenn ihr mir trotzdem gefallen tut und mir helfen wollt. Also ich versuche die Pfeil-Tasten mit in mein snake Programm einzubinden. Hier mal die nötigen textstellen.

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.Timer;

public class snake extends Applet implements KeyListener {

public void init() {

   for (int zaehl=0; zaehl<401; zaehl++){
     schlange[zaehl]= 41;
     schlange2[zaehl]= 41;
   }
   schlange[laenge]= 20;
   schlange2[laenge]= 20;
   Panel cp = new Panel(null);
   cp.setBounds(0,0,1000,700);
   add(cp);
   cp.addKeyListener(this);
   addKeyListener(this);
   
   Panel grid = new Panel(new GridLayout(40,40));
   grid.setBackground(Color.black);
   grid.setBounds(10,10,400,400);
   grid.addKeyListener(this);
   
   Panel richtungen = new Panel(new GridLayout(2,3,1,1));
   richtungen.setBounds(500,100,200,50);
   richtungen.addKeyListener(this);
   cp.add(richtungen);
   cp.add(grid);


   // Anfang Komponenten

   for (n=0; n<40; n++){
     for (m=0; m<40; m++) {
       t[n][m] = new Label();
       t[n][m].setBackground(Color.green);
       grid.add(t[n][m]);
     }
   }
   t[20][20].setBackground(Color.red);
   if ((futterx != 20) && (futtery != 20)){
     t[futterx][futtery].setBackground(Color.YELLOW);
   }




    
    button1.setBounds(140, 10, 75, 25);
    button1.setLabel("Hoch");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });


    button2.setBounds(140, 60, 75, 25);
    button2.setLabel("Runter");
    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button2_ActionPerformed(evt);
      }
    });

    
      button3.setBounds(100, 30, 75, 25);
    button3.setLabel("Links");
    button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button3_ActionPerformed(evt);
      }
    });
    
    button4.setBounds(200, 30, 75, 25);
    button4.setLabel("Rechts");
    button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button4_ActionPerformed(evt);
      }
    });

    
    richtungen.add(test1);
    richtungen.add(button1);
    richtungen.add(test2);
    richtungen.add(button3);
    richtungen.add(button2);
    richtungen.add(button4);
    n=20;
    m=20;


    // Ende Komponenten

  }


BLABLABLA und dann

Code:
public void keyPressed(KeyEvent e){

    int taste = e.getKeyCode();
    if (taste == e.VK_UP){
      if (richtung != 2){
        richtung = 1;
        timer1.start();
      }
    }
  
  
  }

  public void keyReleased(KeyEvent e){}

  public void keyTyped(KeyEvent e){}

Also es gibt keinen Fehler. Aber es reagiert halt auch nicht. Ich habe den KeyListener in allen Panels geadded, weil ich hoffe so immer einen Panel im fokus zu haben und dass so der keylistener auch immer geht.
 

Marco13

Top Contributor
BLABLABLA kann interessant sein.
Code:
public void keyPressed(KeyEvent e){ 
System.out.println("Hallo? "+e);
...
erscheint das?
 
G

Guest

Gast
Nein da erscheint nix hatte ich auch schon versucht... Also wie gesagt reagiert nicht.

Also hier mal ganzer Text

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.Timer;
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 14.01.2009
  * @author
  */

public class snake extends Applet implements KeyListener {
  // Anfang Attribute

  private Label test1 = new Label();
  private Label test2 = new Label();
  private Button button1 = new Button();
  private Button button2 = new Button();
  private Button button3 = new Button();
  private Button button4 = new Button();

  // Ende Attribute
  Label t[][] = new Label [40][40];
  int laenge=0;
  int richtung;
  int n;
  int m;
  boolean foodStack;
  int schlange[]= new int[1600];
  int schlange2[]= new int[1600];
  java.util.Random generator = new java.util.Random();
  int futterx = generator.nextInt(39);
  int futtery = generator.nextInt(39);
  int s; int j;

  public void init() {

   for (int zaehl=0; zaehl<401; zaehl++){
     schlange[zaehl]= 41;
     schlange2[zaehl]= 41;
   }
   schlange[laenge]= 20;
   schlange2[laenge]= 20;
   Panel cp = new Panel(null);
   cp.setBounds(0,0,1000,700);
   add(cp);
   cp.addKeyListener(this);
   addKeyListener(this);
   
   Panel grid = new Panel(new GridLayout(40,40));
   grid.setBackground(Color.black);
   grid.setBounds(10,10,400,400);
   grid.addKeyListener(this);
   
   Panel richtungen = new Panel(new GridLayout(2,3,1,1));
   richtungen.setBounds(500,100,200,50);
   richtungen.addKeyListener(this);
   cp.add(richtungen);
   cp.add(grid);


   // Anfang Komponenten

   for (n=0; n<40; n++){
     for (m=0; m<40; m++) {
       t[n][m] = new Label();
       t[n][m].setBackground(Color.green);
       grid.add(t[n][m]);
     }
   }
   t[20][20].setBackground(Color.red);
   if ((futterx != 20) && (futtery != 20)){
     t[futterx][futtery].setBackground(Color.YELLOW);
   }




    
    button1.setBounds(140, 10, 75, 25);
    button1.setLabel("Hoch");
    button1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button1_ActionPerformed(evt);
      }
    });


    button2.setBounds(140, 60, 75, 25);
    button2.setLabel("Runter");
    button2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button2_ActionPerformed(evt);
      }
    });

    
      button3.setBounds(100, 30, 75, 25);
    button3.setLabel("Links");
    button3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button3_ActionPerformed(evt);
      }
    });
    
    button4.setBounds(200, 30, 75, 25);
    button4.setLabel("Rechts");
    button4.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        button4_ActionPerformed(evt);
      }
    });

    
    richtungen.add(test1);
    richtungen.add(button1);
    richtungen.add(test2);
    richtungen.add(button3);
    richtungen.add(button2);
    richtungen.add(button4);
    n=20;
    m=20;


    // Ende Komponenten

  }
  // Anfang Methoden
  
  
  private ActionListener richtung1ActionListener = new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
      int r = 0;
      if (richtung == 1) {
        if (n > 0) {
          n--;
        }
          for (int doppelt=0; doppelt<laenge+1; doppelt++){
            if ((schlange[doppelt]==n) && (schlange2[doppelt] == m)){
              richtung=0;
              button1.disable();
              button2.disable();
              button3.disable();
              button4.disable();
              
            }
          }
          if ((futterx == n) && (futtery == m) && (richtung!=0)){
            laenge++;
            for (int i=0; i<laenge; i++){
              r=i+1;
              schlange[laenge-i]=schlange[laenge-r];
              schlange2[laenge-i]=schlange2[laenge-r];
            }
            schlange[0]=n;
            schlange2[0]=m;
            futterx = generator.nextInt(39);
            futtery = generator.nextInt(39);
            foodStack=false;
            foodTest();
            t[n][m].setBackground(Color.red);
          }
          else if ((futterx != n) || (futtery != m) && (richtung!=0)){
            s=schlange[laenge];
            j=schlange2[laenge];
            t[s][j].setBackground(Color.GREEN);
            for (int i=0; i<laenge; i++){
              r=i+1;
              schlange[laenge-i]=schlange[laenge-r];
              schlange2[laenge-i]=schlange2[laenge-r];
            }
            schlange[0]=n;
            schlange2[0]=m;
            t[n][m].setBackground(Color.RED);
          }


      }
    }

};

private ActionListener richtung2ActionListener = new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
    int r = 0;
    if (richtung == 2) {
      if (n < 39) {
        n++;
      }
      for (int doppelt=0; doppelt<laenge+1; doppelt++){
        if ((schlange[doppelt]==n) && (schlange2[doppelt] == m)){
          richtung=0;
          button1.disable();
          button2.disable();
          button3.disable();
          button4.disable();
        }
      }
        if ((futterx == n) && (futtery == m) && (richtung!=0)){
          laenge++;
          for (int i=0; i<laenge; i++){
            r=i+1;
            schlange[laenge-i]=schlange[laenge-r];
            schlange2[laenge-i]=schlange2[laenge-r];
          }
          schlange[0]=n;
          schlange2[0]=m;
          futterx = generator.nextInt(39);
          futtery = generator.nextInt(39);
          foodStack=false;
          foodTest();
          t[n][m].setBackground(Color.red);

        }
        else if ((futterx != n) || (futtery != m) && (richtung!=0)){
          s=schlange[laenge];
          j=schlange2[laenge];
          t[s][j].setBackground(Color.GREEN);
          for (int i=0; i<laenge; i++){
            r=i+1;
            schlange[laenge-i]=schlange[laenge-r];
            schlange2[laenge-i]=schlange2[laenge-r];
          }
          schlange[0]=n;
          schlange2[0]=m;
          t[n][m].setBackground(Color.RED);
        }



    }
  }
};





  private ActionListener richtung3ActionListener = new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
    int r = 0;
    if (richtung == 3) {
      if (m > 0) {

        m--;
      }

      for (int doppelt=0; doppelt<laenge+1; doppelt++){
          if ((schlange[doppelt]==n) && (schlange2[doppelt]== m)){
            richtung=0;
            button1.disable();
            button2.disable();
            button3.disable();
            button4.disable();
          }
      }
        if ((futterx == n) && (futtery == m) && (richtung!=0)){
          laenge++;
          for (int i=0; i<laenge; i++){
            r=i+1;
            schlange[laenge-i]=schlange[laenge-r];
            schlange2[laenge-i]=schlange2[laenge-r];
          }
          schlange[0]=n;
          schlange2[0]=m;
          futterx = generator.nextInt(39);
          futtery = generator.nextInt(39);

          foodStack=false;
          foodTest();
          t[n][m].setBackground(Color.red);
        }
        else if ((futterx != n) || (futtery != m) && (richtung!=0)){
          s=schlange[laenge];
          j=schlange2[laenge];
          t[s][j].setBackground(Color.GREEN);
          for (int i=0; i<laenge; i++){
            r=i+1;
            schlange[laenge-i]=schlange[laenge-r];
            schlange2[laenge-i]=schlange2[laenge-r];
          }
          schlange[0]=n;
          schlange2[0]=m;
          t[n][m].setBackground(Color.RED);
        }



    }
  }
};

private ActionListener richtung4ActionListener = new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
    int r = 0;
    if (richtung == 4) {
      if (m < 39) {

        m++;
      }

      for (int doppelt=0; doppelt<laenge+1; doppelt++){
          if ((schlange[doppelt]==n) && (schlange2[doppelt]== m)){
            richtung=0;
            button1.disable();
            button2.disable();
            button3.disable();
            button4.disable();
          }
      }
       if ((futterx == n) && (futtery == m) && (richtung!=0)){
         laenge++;
         for (int i=0; i<laenge; i++){
           r=i+1;
           schlange[laenge-i]=schlange[laenge-r];
           schlange2[laenge-i]=schlange2[laenge-r];
         }
         schlange[0]=n;
         schlange2[0]=m;
         futterx = generator.nextInt(39);
         futtery = generator.nextInt(39);
         t[n][m].setBackground(Color.red);
         foodStack=false;
         foodTest();
       }
       else if ((futterx != n) || (futtery != m) && (richtung!=0)){
         s=schlange[laenge];
         j=schlange2[laenge];
         t[s][j].setBackground(Color.GREEN);
         for (int i=0; i<laenge; i++){
           r=i+1;
           schlange[laenge-i]=schlange[laenge-r];
           schlange2[laenge-i]=schlange2[laenge-r];
         }
         schlange[0]=n;
         schlange2[0]=m;
         t[n][m].setBackground(Color.RED);
       }



    }
  }
};


private Timer timer1 = new Timer(100, richtung1ActionListener);
private Timer timer2 = new Timer(100, richtung2ActionListener);
private Timer timer3 = new Timer(100, richtung3ActionListener);
private Timer timer4 = new Timer(100, richtung4ActionListener);


public void button1_ActionPerformed(ActionEvent evt) {
  if (richtung != 2){
   richtung = 1;
   timer1.start();
  }

}

public void button2_ActionPerformed(ActionEvent evt) {
  if (richtung != 1){
    richtung = 2;
    timer2.start();
  }
}

public void button3_ActionPerformed(ActionEvent evt) {
  if (richtung != 4){
    richtung = 3;
    timer3.start();
  }
}

public void button4_ActionPerformed(ActionEvent evt) {
  if (richtung != 3){
    richtung = 4;
    timer4.start();
  }
}

public void foodTest () {

  for (int food2=0; food2<laenge+1; food2++){
    if ((schlange[food2]==futterx) && (schlange2[food2] == futtery) && (foodStack == false)){
      foodStack=true;
    }
  }
  if (foodStack==true) {
    futterx = generator.nextInt(39);
    futtery = generator.nextInt(39);
    foodTest();
  }
  else if (foodStack==false) {
    t[futterx][futtery].setBackground(Color.YELLOW);
  }

}
  public void keyPressed(KeyEvent e){
    System.out.println("Hallo? "+e);
    int taste = e.getKeyCode();
    if (taste == e.VK_UP){
      if (richtung != 2){
        richtung = 1;
        timer1.start();
      }
    }
  
  
  }

  public void keyReleased(KeyEvent e){}

  public void keyTyped(KeyEvent e){}







  // Ende Methoden

}

Kannst du direkt so starten
 

Marco13

Top Contributor
Man muss wohl noch
Panel cp = new Panel(null);
cp.setFocusable(true);
einfügen, damit ein Panel einen Focus haben kann (und dann ggf. nach dem Start draufklicken). Ansonsten.... ist der Code... ziemlich ... :autsch: ... aber vielleicht bringt ja jemand anderes die Energie auf, dort alle :autsch: - Stellen aufzuzählen und Verbesserungsvorschläge zu bringen. Mir wär' das jetzt zu viel auf einmal.
 
H

Hasorko

Gast
Ich weiß das der Quelltext schlecht ist. Sorry bin nu ma erst 13. Klasse und habe Java erst seit nem halben Jahr ...

egal aber ich hab des mit dem Fokus auch rausgefunden gehabt funzt jetzt also. Wollt nur sagen is ok kann closed werden
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
A KeyListener funktioniert nicht Java Basics - Anfänger-Themen 7
B Keylistener auf JSpinner reagiert nicht? Java Basics - Anfänger-Themen 3
M Globale Variablen werden durch KeyListener nicht aktualisier Java Basics - Anfänger-Themen 10
E Keylistener funktioniert nicht richtig. Java Basics - Anfänger-Themen 17
G Applet mit Keylistener funktioniert nicht Java Basics - Anfänger-Themen 3
D Weis nicht weiter mit Keylistener Java Basics - Anfänger-Themen 17
G KeyListener reagiert nicht Java Basics - Anfänger-Themen 5
D Keylistener reagiert nicht mehr Java Basics - Anfänger-Themen 15
M KeyListener will nicht. Java Basics - Anfänger-Themen 5
D KeyListener funktioniert nicht Java Basics - Anfänger-Themen 10
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
T KeyListener Java Basics - Anfänger-Themen 2
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
J KeyListener Java Basics - Anfänger-Themen 11
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
G Keylistener in einer Schleife Java Basics - Anfänger-Themen 9
M problem mit keylistener Java Basics - Anfänger-Themen 2
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32

Ähnliche Java Themen

Neue Themen


Oben