Hallo zusammen,
ich sitze hier an einer Aufgaber und komme nicht weiter. Der Code scheint anundfür sich richtig zur sein nur leider habe ich was vergessen, da es nicht so funktioniert wie es sollte. Ich soll mit dem KeyListener, ActionListener bzw. paint() und repaint() über die Pfeiltastern ein blaues Rechteck bewegen. Das Rechteckt wird auch gezeichnet, nur leider bewegt es sich beim Tastendruck nicht. Wäre nett wenn mir jemand helfen könnte und mir sagen könnte was ich vergesse / übersehe... Danke!
ich sitze hier an einer Aufgaber und komme nicht weiter. Der Code scheint anundfür sich richtig zur sein nur leider habe ich was vergessen, da es nicht so funktioniert wie es sollte. Ich soll mit dem KeyListener, ActionListener bzw. paint() und repaint() über die Pfeiltastern ein blaues Rechteck bewegen. Das Rechteckt wird auch gezeichnet, nur leider bewegt es sich beim Tastendruck nicht. Wäre nett wenn mir jemand helfen könnte und mir sagen könnte was ich vergesse / übersehe... Danke!
Code:
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.JFrame;
import javax.swing.JPanel;
public class Paint extends JPanel implements ActionListener, KeyListener{
int x=150;
int y=150;
int posX = 0;
int posY = 0;
public Paint(){
this.addKeyListener(this);
}
public void paint(Graphics g){
super.paint(g);
g.setColor(Color.BLUE);
g.fillRect(x, y, 30, 30);
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP){
posY = -5;
}
else if(e.getKeyCode() == KeyEvent.VK_DOWN){
posY = +5;
}
else if(e.getKeyCode() == KeyEvent.VK_RIGHT){
posX = +5;
}
else if(e.getKeyCode() == KeyEvent.VK_LEFT){
posX = -5;
}
}
public void actionPerformed(ActionEvent e){
y = y + posY;
x = x + posX;
repaint();
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
}
public static void main(String[] args){
Paint p = new Paint();
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300, 300);
jf.setTitle("Fenster");
jf.setVisible(true);
jf.add(p);
}
}