java中JPanel如何实现键盘监听事件

我有两个类,一个是JFrame和一个JPanel,在JPanel中实现游戏的键盘事件,然后将JPanel添加到JFrame中,请问如何实现JPanel的键盘监听事件?
//

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class stootGame extends JFrame {

public stootGame()
{
super("stootGame");
myMenuBar menubar=new myMenuBar();
this.setJMenuBar(menubar);

myGamePanel gamePanel=new myGamePanel();
this.add(gamePanel,BorderLayout.CENTER);
//gameFrame gameframe=new gameFrame();
this.add(gamePanel);
//this.setContentPane(gameframe);
Thread panelThread=new Thread(gamePanel);
panelThread.start();

//this.setSize(350,350);
this.setBounds(200,200,400,600);
this.setVisible(true);
}
public static void main(String []args)
{
stootGame stootgame= new stootGame();

//stootgame.setTitle("stootGame");
}
}

//JPanel类

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
@SuppressWarnings("serial")
public class myGamePanel extends JPanel implements KeyListener, Runnable {
int x=150,y=430,dx,dy;
int bx,by,dbx,dby=-10,flag=0;
Image img,imgBomb;
JTextField text,text2;
public myGamePanel()
{
Toolkit tk=Toolkit.getDefaultToolkit();
img=tk.getImage(myGamePanel.class.getResource("fly40.png"));
imgBomb=tk.getImage(myGamePanel.class.getResource("bomb1.png"));
//this.addKeyListener(this);
this.setLayout(null);
text=new JTextField();
text2=new JTextField();
//text.addKeyListener(this);

text.setBounds(5,5,50,25);
text2.setBounds(5,30,50,25);
//this.add(text);
//this.add(text2);
this.addKeyListener(this);
//enableEvents(AWTEvent.KEY_EVENT_MASK);
}

@Override
public void run() {
// TODO Auto-generated method stub
while(true){
if(by<0)by=0;
if(flag==0)by=by+dby;
repaint();
try{
Thread.sleep(10);
}catch(InterruptedException e){}

}

}

public void paint(Graphics g){
g.drawImage(img,x,y,this);
g.drawImage(imgBomb, bx, by,this);
}

@Override
public void keyTyped(KeyEvent e) {//键盘按键敲击事件
// TODO Auto-generated method stub

}

@Override
public void keyPressed(KeyEvent e) {//键盘按键按下事件
// TODO Auto-generated method stub
switch(e.getKeyCode())
{
case KeyEvent.VK_RIGHT:
dx=5;dy=0;
break;
case KeyEvent.VK_LEFT:
dx=-5;dy=0;
break;
case KeyEvent.VK_UP:
dx=0;dy=-5;
break;
case KeyEvent.VK_DOWN:
dx=0;dy=5;
break;
case KeyEvent.VK_SPACE:
dx=0;dy=0;
bx=x+15;
by=y-5;
flag=1;
default:
dx=0;dy=0;

}
x=x+dx;
y=y+dy;

}

@Override
public void keyReleased(KeyEvent e) {//键盘按键释放事件
// TODO Auto-generated method stub

}
}

JPanel的键盘监听事件没有响应,请问怎么实现?

第1个回答  2011-03-30
如果想知道,请问:MIMOSAatBJ@163.com
我现在很忙!本回答被提问者采纳
第2个回答  2012-08-29
你好,你是怎么实现的啊?
相似回答