Richard_

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

因为在自己的游戏需求中谢了要用键盘控制飞机的移动,所以用到键盘监听事件,但是使用了JPanel之后添加了键盘监听事件,按相应的方向键飞机并没有反应。但是如果是为JFrame的内容面板加则会有反应。

为了使得能在JPanel里头使用键盘事件解决方法如下:

1、在JPanel里头添加键盘监听

this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()){
case KeyEvent.VK_UP:
player.move("UP");
break;
case KeyEvent.VK_DOWN:
player.move("DOWN");
break;
case KeyEvent.VK_RIGHT:
player.move("RIGHT");
break;
case KeyEvent.VK_LEFT:
player.move("LEFT");
break;
case KeyEvent.VK_Z: //Z建使用导弹,炸毁所有敌机
player.useMissile(enemyPlanes, bombs);
break;
}
}
});

2、在主函数里头将所要添加的JPnael设置为静态成员

 

private static BackgroundPanel panelBackground; 

3、在JFrame构造函数中初始化静态成员并添加到内容面板,并且在主函数中使JPanel获得焦点

Frame的构造函数中:  

panelBackground = new BackgroundPanel();
panelBackground.setBounds(0,0,386,385);
contentPane.add(panelBackground);

主函数中:

GameFrame frame = new GameFrame();
frame.setVisible(true);
GameFrame.panelBackground.requestFocus();

 

posted on 2014-09-07 11:53  Richard_  阅读(2326)  评论(0编辑  收藏  举报