【发布时间】:2015-05-05 14:59:54
【问题描述】:
public class Movement implements ActionListener {
MazeModel model = new MazeModel();
public void keyPressed(KeyEvent e){ //all of the different movement keys
if(e.getKeyCode() == KeyEvent.VK_W || e.getKeyCode() == KeyEvent.VK_UP){
model.moveUP(model.getUserY());
}
else if(e.getKeyCode() == KeyEvent.VK_A || e.getKeyCode() == KeyEvent.VK_LEFT){
model.moveLEFT(model.getUserX());
}
else if(e.getKeyCode() == KeyEvent.VK_S || e.getKeyCode() == KeyEvent.VK_DOWN){
model.moveDOWN(model.getUserY());
}
else if(e.getKeyCode() == KeyEvent.VK_D || e.getKeyCode() == KeyEvent.VK_RIGHT){
model.moveRIGHT(model.getUserX());
}
}
//no need for either of these at the moment
public void keyRealeased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
//painting the image
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage("player.png", model.getUserX(), model.getUserY(), this);
}
//every time a key is pressed the screen will repaint the image
public void actionPerformed(ActionEvent ae){
repaint();
}
}
为什么我无法使用super.paintComponent(g);?
它说它对于类型 Object 是未定义的。
它还说 drawImage 不适用于我的图像。此外,当在public void actionPerformed(ActionEvent ae) 中执行操作时,我无法repaint();。
【问题讨论】:
-
public class Movement implements ActionListener {不是JFrame也不是JPanel。 -
总是在带有
@Override的方法之前是一个覆盖:keyTyped,尤其是paintComponent。如果它不会被覆盖。没有人叫它。
标签: java actionlistener paint keyevent actionevent