Swing是否一直在扫描键盘输入(java)?
我正在尝试使用g.drawImage()将我绘制的图像移动到Jpanel上。我需要知道为什么这个代码不起作用(我正在尝试使用w键将图像向上移动以重新定位图像)Swing是否一直在扫描键盘输入(java)?,java,swing,input,keyboard,Java,Swing,Input,Keyboard,我正在尝试使用g.drawImage()将我绘制的图像移动到Jpanel上。我需要知道为什么这个代码不起作用(我正在尝试使用w键将图像向上移动以重新定位图像) 不应在keyPressed()或keyReleased()方法内调用repaint() 稍后调用repaint()。不应在keyPressed()或keyreased()方法中调用repaint() 稍后调用repaint() 仅仅通过将KeyEvent命名为w,实际上并不是在检查w键。您需要检查if(w.getKeyCode()==Ke
不应在keyPressed()或keyReleased()方法内调用repaint()
稍后调用repaint()。不应在keyPressed()或keyreased()方法中调用repaint() 稍后调用repaint()
if(w.getKeyCode()==KeyEvent.VK\u w)
CharY
中减去以使其上升paint
函数的内部是什么,或者您是否实现了它,很难说问题是否真的存在,但它应该是这样的
public void绘制(图形g){
g、 drawImage(yourImage,CharX,CharY,null);
}
if(w.getKeyCode()==KeyEvent.VK\u w)
CharY
中减去以使其上升paint
函数的内部是什么,或者您是否实现了它,很难说问题是否真的存在,但它应该是这样的
public void绘制(图形g){
g、 drawImage(yourImage,CharX,CharY,null);
}
您还可以更改
CharY=CharY+1代码>至CharY+=1代码>您还可以更改CharY=CharY+1代码>至CharY+=1
@user1952565查看您的帖子上关于它为什么不做任何事情的评论。这不会被编译,因为w是未知的。@user1952565查看您的帖子上关于它为什么不做任何事情的评论。这不会被编译,因为w是未知的。我把repaint()放在哪里;?而最好实现Runnable
和putrepaint()
在运行
函数的内部,这样您就可以管理它发生的频率,我看不出有任何理由它不应该在按下键的内部工作。我在mouseMove
中使用过它,没有任何问题,因此keyPressed
也应该可以工作。代码的最大问题是没有实现keylister
。一旦添加了它,您就需要创建一个构造函数并将其放入addKeyListener(这个)代码>。然后您的按键
函数实际上应该被调用。构造函数是一个在创建对象时自动调用的函数。它可用于设置其初始状态。现在,您的构造函数应该看起来像publicMyComponents(){addKeyListener(this);}
我在放置它时出错,它建议将这个addKeyListener((KeyListener)this)放置;我应该在哪里重新绘制();?而最好实现Runnable
和putrepaint()
在运行
函数的内部,这样您就可以管理它发生的频率,我看不出有任何理由它不应该在按下键的内部工作。我在mouseMove
中使用过它,没有任何问题,因此keyPressed
也应该可以工作。代码的最大问题是没有实现keylister
。一旦添加了它,您就需要创建一个构造函数并将其放入addKeyListener(这个)代码>。然后您的按键
函数实际上应该被调用。构造函数是一个在创建对象时自动调用的函数。它可用于设置其初始状态。现在,您的构造函数应该看起来像publicMyComponents(){addKeyListener(this);}
我在放置它时出错,它建议将这个addKeyListener((KeyListener)this)放置;
int CharX = 1;
int CharY = 30;
public void keyPressed(KeyEvent w) {
CharY = CharY + 1;
repaint();
}
public void keyReleased(KeyEvent w) {
CharY = CharY + 1;
repaint();
}
public void keyPressed(w.getKeyCode() == KeyEvent.VK_W) {
CharY = CharY + 1;
}