Ich habe versucht, einen Ball zu erstellen, der sich bewegt, wenn ich auf die Pfeiltasten klicke. Wenn ich jedoch auf die Pfeiltasten klicke, reagiert der Ball nicht. Ich habe versucht, einen Ball zu erstellen, der sich bewegt, wenn ich auf die Pfeiltasten klicke. Wenn ich jedoch auf die Pfeiltasten klicke, reagiert der Ball nicht. Hier ist mein Code:Probleme beim Verschieben von Objekten in Java
package ball.main;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Ball extends JPanel implements ActionListener, KeyListener {
Timer t = new Timer(5, this);
int x = 0;
int y = 0;
int velX;
int velY;
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
g.fillOval(x, y, 20, 20);
t.start();
}
@Override
public void actionPerformed(ActionEvent e) {
if (x < 0) {
x = 0;
}
if (x > 580) {
x = 580;
}
if (y < 0) {
y = 0;
}
if (y > 580) {
y = 580;
}
x += velX;
x += velY;
repaint();
}
@Override
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP) {
velY = -1;
}
if (code == KeyEvent.VK_DOWN) {
velY = 1;
}
if (code == KeyEvent.VK_RIGHT) {
velX = 1;
}
if (code == KeyEvent.VK_LEFT) {
velX = -1;
}
}
@Override
public void keyReleased(KeyEvent e) {
velX = 0;
velY = 0;
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
Was ist falsch mit meinem Code?
zu verwenden Beginnen Sie nicht immer ein Timer-Objekt in einer Malweise. Die Methode paintComponent() wird nur zum Malen verwendet. – camickr