如题,程序中键盘事件无法响应,怀疑是没有正确获取焦点,请问如何处理(程序功能是实现贪吃蛇自己自由自主移动,用户通过方向键改变方向)
代码附下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Draw extends Canvas implements InterfaceDefine{
int a,b;
int x,y;
@Override
public void paint(Graphics g) {
draw.requestFocus(true);
drawSnake(g);
drawBean();
}
public void drawSnake(Graphics g){
requestFocus(true);
addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP ||
e.getKeyCode() == KeyEvent.VK_DOWN) {
System.out.println("ok");
a = 0;
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
b = 10;
} else b = -10;
}
if (e.getKeyCode() == KeyEvent.VK_LEFT ||
e.getKeyCode() == KeyEvent.VK_RIGHT) {
b = 0;
System.out.println("ok");
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
a = 10;
} else a = -10;
}
}
});
g.fillRect(x++, y++, 10, 30);
}
public void drawBean(){
Graphics g = this.getGraphics();
g.fillOval(110,0,10,10);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
update(g);
}
}