Bin gerade an einem Tutorial für Spiele und habe das Problem, dass der KeyListener nicht funktioniert. Ich habe natürlich nicht alles 1:1 kopiert, aber ich bin mir sicher den Schritten gefolgt zu sein und so wie ich das bis jetzt verstanden habe, müsste es eigentlich gehen. Ich habe zum Test erstmal den Key der eingegeben wird probiert ausgeben zu lassen, aber selbst hier passiert nichts. Vielleicht habe ich ja einen Fehler gemacht und jemand kann mir helfen? Gruß
||edit: Also egal welche Taste ich betätige, wird sie vom Programm ignoriert.
Java:
import java.applet.Applet;
import java.awt.Color;
import java.awt.Event;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class BallApplet extends Applet implements Runnable, KeyListener {
int x_pos = 10;
int y_pos = 10;
int radius = 20;
boolean richtungx;
boolean richtungy;
private Thread thread;
public void init() {
setBackground(Color.black);
addKeyListener(this);
}
public void start() {
this.thread = new Thread(this);
thread.start();
init();
}
public void stop() {
}
public void destroy() {
}
public void run() {
while (true) {
if (x_pos == 780) {
richtungx = false;
}
if (x_pos == 20 | x_pos == 0) {
richtungx = true;
}
if (y_pos == 20) {
richtungy = false;
}
if (y_pos == 580) {
richtungy = true;
}
if (richtungx) {
x_pos = x_pos + 10;
}
if (richtungx == false) {
x_pos = x_pos - 10;
}
if (richtungy) {
y_pos = y_pos - 10;
}
if (richtungy == false) {
y_pos = y_pos + 10;
}
repaint();
try {
Thread.sleep(30);
} catch (InterruptedException e) {
}
}
}
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
}
public boolean mouseDown(Event e, int x, int y) {
if (richtungx) {
richtungx = false;
} else {
richtungx = true;
}
return true;
}
public void keyPressed(KeyEvent e) {
System.out.println("" + e.getKeyChar());
}
public void keyReleased(KeyEvent e) {
System.out.println("" + e.getKeyChar());
}
public void keyTyped(KeyEvent e) {
System.out.println("" + e.getKeyChar());
}
}
Java:
import javax.swing.JFrame;
public class JavaApplication24 {
public static void main(String[] args) {
BallApplet ba = new BallApplet();
JFrame frame1 = new JFrame("Ball");
frame1.setSize(800,600);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.add(ba);
frame1.setVisible(true);
ba.run();
}
}
||edit: Also egal welche Taste ich betätige, wird sie vom Programm ignoriert.
Zuletzt bearbeitet: