我正在使用以下代码尝试打印出一个数组并通过xaxis和yaxis的变量移动BufferedPicture(测试)。
还有一个名为“Screen”的类,但它与此问题无关。
//StartController
public void keyPressed(KeyEvent q) {
if(q.getKeyCode() ==37){
left = true;
}
if(q.getKeyCode() ==38){
up = true;
}
if(q.getKeyCode() ==39){
right = true;
}
if(q.getKeyCode() ==40){
down = true;
}
}
public void keyReleased(KeyEvent q) {
if(q.getKeyCode() == 37){
left = false;
}
if(q.getKeyCode() == 38){
up = false;
}
if(q.getKeyCode() == 39){
right = false;
}
if(q.getKeyCode() == 40){
down = false;
}
}
//EndController
}
然后问题代码(代码中没有中断到} // StartController
{{1}}
答案 0 :(得分:0)
我认为问题在于您没有在应用程序中实现或添加KeyListener。您必须实现KeyListener,并继承所有方法。
像这样:
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
/**
* Simple Canvas with KeyListener
*/
public class TestCanvas extends Canvas implements KeyListener, Runnable {
public TestCanvas() {
addKeyListener(this);
}
@Override
public void keyTyped(KeyEvent e) {
//Do Stuff
}
@Override
public void keyPressed(KeyEvent e) {
//Do Stuff
}
@Override
public void keyReleased(KeyEvent e) {
//Do Stuff
}
}
其次,我建议使用KeyEvent.VK_(某些键)来比较键代码值,这样您就不会依赖于每个键盘的常量始终为真的假设。