请问高手这是什么原因,以前看过一本书上好像介绍过,不过翻了半天也没找到那本书,只好求教各位了

解决方案 »

  1.   

    你执行绘画的代码写在哪了?
    要放在paint方法里。
      

  2.   

    所有的绘图操作都要在paint方法的调用下执行(这样屏幕的每次刷新都将自动paint),不能通过别的途径执行
      

  3.   

    最小化后最大化,会paint界面。
    如果你的方法没在paint中调用,会被刷掉
      

  4.   

    是的我也经常遇到这个问题....最近才发现解决办法...用双缓冲技术...可以良好的解决这个问题..并且不屏闪下面是一个使用双缓冲的applet程序的简单代码// 程序:使用双缓冲区
    // 范例文件:UseDoubleBuffering.javaimport java.awt.*;
    import java.applet.*;public class UseDoubleBuffering extends Applet implements Runnable
    {
       int    X,Y,moveX,moveY,width,height;  
       Thread newThread;                  Image    OffScreen;        
       Graphics drawOffScreen;      public void init()
       {
          X      = 0;          
          Y      = 0;         
          moveX  = 2;        
          moveY  = 3;        
          width  = getSize().width;   
          height = getSize().height;        OffScreen     = createImage(width,height); 
          drawOffScreen = OffScreen.getGraphics(); 
       }   public void start()         
       {
          newThread = new Thread(this); 
          newThread.start();
       }   public void stop()         
       {
          newThread = null;     
       }   public void paint(Graphics g)
       {      drawOffScreen.setColor(Color.black);
          drawOffScreen.fillRect(0,0,width,height);      drawOffScreen.setColor(Color.white);
          drawOffScreen.fillOval(X,Y,30,30);        g.drawImage(OffScreen,0,0,this); 
       }   public void update(Graphics g)      
       {
          paint(g);                       
       }   public void run()
       {
          while(newThread != null)       
          {
             repaint();                         try
             {
                Thread.sleep(50);     
             }
             catch(InterruptedException E){ }
           
             X = X + moveX;        
             Y = Y + moveY;        
        
             if(X >= (width - 30))
             {
                X     = width - 30;
                moveX = -moveX;
             }
             if(X <= 0)
             {
                X = 0;
                moveX = -moveX;
             } 
             if(Y >= (height - 30))
             {
                Y     = height - 30;
                moveY = -moveY;
             }
             if(Y <= 0)
             {
                Y = 0;
                moveY = -moveY;
             } 
          }
       }
    }