try  {  Thread.sleep(50);  }  
上一行,将sleep()中延时设长点,比如250

解决方案 »

  1.   

    是好了一点,但还是有。但是如果用双缓冲的话即使是try  {  Thread.sleep(50);  } 也是非常平滑,一点闪烁都没有。难道单纯重载update()不行?
      

  2.   

    首先,update()什么也不调用,当你调用repaint()方法的时候,程序如此运行repaint()-->update()-->paint(g),
    而你复写update() { paint(g);},只增加了一点点效率,根本没有解决闪烁的问题.闪烁问题,归根到蒂是因为,程序控制的绘图速度太低,人都能看出闪烁,至少有两种解决办法:(1).每次只画改变了的地方,比如你蓝天的背景根本不变,就不要重画,只画太阳移动.(2)使用双缓冲技术,也就是说,分配一块内存,它记录屏幕上的变化,然后一次性的绘图到屏幕上,效率很高但,占用内存很大.
      

  3.   

    UFOFox(风) 说的好   确实如此