Swing是否继续扫描键盘输入(java)?

时间:2013-05-31 15:54:40

标签: java swing input keyboard

我正在尝试使用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();
}

2 个答案:

答案 0 :(得分: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); }

答案 1 :(得分:0)

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

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

稍后再调用repaint()。