你把绘图工作放到paint里面,需要重绘的时候他会先去掉用update方法,update方法会去调用paint方法。当然你也可以重载update方法,在里面写你的东西你只要知道调用顺序  你要执行repaint----->update-------->paint    如果你没有重载这些方法,他会调用默认的实现cancel是什么东西?你是要调用dispose吧?

解决方案 »

  1.   

    对,没写明白,cancel()是我自己写的,调用的是dispose~
    楼上说的paint我试试,希望继续指教~~谢了
      

  2.   

    repaint->update->paint 

      

  3.   

    楼上不会repaint->update->paint没学过罢,呵呵。
    //调用客户端向服务器发信息,服务器验证正确之后返回信息,并将Sj_LoadBox.IdIsRight置为truenew Sj_client(name,password);
    if(sj_LoadBox.IdIsRight==true)
    {
        cancel();
    }
    楼主我不知道你的Sj_client的类的内容,但我猜想他是一个swing线程。
    那么问题可能不太复杂,如果你的Sj_client这个swing线程是非阻塞的话,那么最有可能的是立刻往下执行if语句,而这时候很可能sj_LoadBox.IdIsRight的值还未改变。嗬嗬,这个就是问题所在了。
    所以要小心非阻塞swing线程的使用。