easy one:
1.   add boolean m_forceSleep = false; as data member2. change
   do{
     try{Thread.sleep(2); }catch...
   }while(m_forceSleep);3. change
  in actionPerformed
   if(start)
     m_forceSleep = false;
   if(stop)
     m_forceSleep = true;

解决方案 »

  1.   

    你这里的错误在于你认为try {Thread .sleep(2);}  catch(InterruptedException e加上这个sleep之后cpu应该是可以把时间用来监听其他的事件。但是实际上你现在的程序中actionPerformed没有执行完,你的监听器响应不到事件。这里要用到多线程的。我把大概思路写给你
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.Applet;public  class   Nn    extends    Applet   implements   ActionListener  {
    private boolean runflag=false;
    private mainclass mc = null
    private class mainclass
    {
    public void run(){
    while( runflag ){
    dosomthing
    }
    }
    } class start implements ActionListener
    {
    mc = new mainclass();
    mc.runflag = true;
    mc.start(); }
    class start implements ActionListener
    {
    mc.runflag = false;
    mc=null;
    }}
      

  2.   

    错了一点runflag应该是属于mainclass的,粘帖的时候失误了:)