我有个Canvas的子类如下
class XXCanvas extends Canvas implements KeyListener, Runnable{
  Thread t1;
  ...
  XXCanvas(){
    if(t1==null)
      t1=new Thread(this);
  }
  ...
  public void run(){
    while(true)
      if(flag)
        ....
      try{t1.sleep(1000);}
      catch(Exception){}  public void keyPressed(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_PAUSE:
      if(flag==true)
        flag=false;
      else
        flag=true;
    }
  }
}
另外有个Frame类,会起这个线程
线程可以正常起来,但是之后我按了PAUSE键好像没有效果,是不是我这样子写是不对的呢?请高手指教哦

解决方案 »

  1.   

    你在你的Frame里面有没有注册这个 KeyListener?没加的话是不行的.
      

  2.   

    是说在Frame里面也需要注册这个KeyListener吗?单单在这个XXCanvas里面是不够的对吗?
      

  3.   

    可是那样我在这个XXCanvas里面写的keylistener岂不是就等于白写了?
    这个Key的捕获不是很明白哦
    我要是在Frame里面没有写Key的捕获 在Canvas里写了是没有用的吗?高手指教