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.
BLABLABLA und dann
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.
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.