我下面这个程序在没有按下Start按钮前它可以监听键盘活动,但一旦按下Start按钮后,就不能监听键盘活动了,请问这是什么原因,我希望按下按钮后还能够监听键盘活动,请问应该如何修改?
import java.util.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.Graphics;
import java.awt.Color;
import java.lang.Math.*;
import java.text.DecimalFormat;
import java.awt.event.*;class SolarSys extends JFrame implements ActionListener,  KeyListener{
boolean ThreadRunning = false;
JPanel btnpan;
JButton btnstart;
public SolarSys() {
// 这是整个图框的大小
this.setSize(200, 200);
this.setVisible(true);
btnpan = new JPanel();
btnpan.setLayout(new FlowLayout());
this.getContentPane().add(btnpan, BorderLayout.NORTH);
// 开始游戏的按钮
btnstart = new JButton("Start");
btnpan.add(btnstart);
btnstart.addActionListener(this);
this.addKeyListener(new KeyHandler());
}public void keyReleased(KeyEvent e) {//键盘弹起事件
}
public void keyPressed(KeyEvent e) {}public void keyTyped (KeyEvent e) {// 键盘按下事件 }
class KeyHandler extends KeyAdapter{
   public void keyPressed(KeyEvent e){
 int keyCode = e.getKeyCode();
System.out.println(""+99);
System.out.println(""+keyCode);
switch (keyCode) {
case KeyEvent.VK_ADD://按下数字键盘上的+
case KeyEvent.VK_PAGE_UP://按下PageUp键 break;
case KeyEvent.VK_SUBTRACT://按下数字键盘上的-
case KeyEvent.VK_PAGE_DOWN://按下PageDown break;
case KeyEvent.VK_SPACE://按下空格键
case KeyEvent.VK_P://按下PauseBreak break;
case KeyEvent.VK_UP://按下向上键 break;
case KeyEvent.VK_DOWN://按下向下键 break;
case KeyEvent.VK_LEFT://按下向左键 break;
case KeyEvent.VK_RIGHT://按下向右键 break;
default:
} if (keyCode == KeyEvent.VK_F || keyCode == KeyEvent.VK_J
|| keyCode == KeyEvent.VK_ENTER) {//按下回车、F、J键开始游戏 }
if (keyCode == KeyEvent.VK_S) {//按下S键停止游戏 }
   }
}
// 这是主程序
void DrawSolar() {
while (true) {
try {Thread.sleep(2000);} catch (InterruptedException e){};;
}
}public void actionPerformed(ActionEvent e) {
Thread8 t = null;
if (e.getSource() == btnstart) {
// 一旦按下这个开始键,程序开始运行太阳系
if (!ThreadRunning) {
t= new Thread8();
ThreadRunning = true;
t.start();
}
else
{t.interrupt();
ThreadRunning = false;
}
}
}
// 这里为了让程序有时间响应用户的操作,必须使用Thread。
class Thread8 extends Thread {
public void run() {
  while (ThreadRunning) {
DrawSolar();
     }
   }
}
}public class Solarmy {
    public static void main(String[] args) throws IOException {
     // 这个办法可以暂停程序以便开发者调试
     /* //
*/
        JFrame dd= new SolarSys();
    }
}