0

我正在尝试使用 g.drawImage() 将我绘制的图像移动到 Jpanel 上。我需要知道为什么这段代码不起作用(我正在尝试使用 w 键重新定位图像以将其向上移动)

int CharX = 1;
int CharY = 30;

public void keyPressed(KeyEvent w) {
    CharY = CharY + 1;
    repaint();
}
public void keyReleased(KeyEvent w) {
    CharY = CharY + 1;
    repaint();
}
4

2 回答 2

3
  1. 您实际上并没有通过命名 KeyEvent w 来检查 w 键。你需要检查if (w.getKeyCode() == KeyEvent.VK_W)
  2. Java 中的 Y 坐标从顶部的 0 开始,因此您可能需要从中减去CharY以使其上升。
  3. 这将更新两次,一次是在按下键时,一次是在您放开它时。不确定这是否是您真正想要的。
  4. 不知道你的paint函数里面有什么,或者你是否实现了它,很难说问题是否真的存在,但它应该看起来像

    public void paint(Graphics g) { g.drawImage(yourImage, CharX, CharY, null); }

于 2013-05-31T16:12:28.160 回答
0

您不应在 keyPressed() 或 keyReleased() 方法中调用 repaint()。

public void keyPressed(w.getKeyCode() == KeyEvent.VK_W) {
    CharY = CharY + 1;
}

稍后调用 repaint()。

于 2013-05-31T15:58:54.333 回答