我做了一个画二维灰度图的java程序,运行时闪烁,不知道怎样才能避免闪烁.请各位大虾帮忙指点一下.最好写出程序.不胜感激! 
package graphics.test;import   java.applet.*;   
import   java.awt.*;   
import   java.awt.image.*;   
  
public   class   Cray  extends   Applet   
{       int[][] abc;
    int max;
      public   void   paint(Graphics   g)   
    {   
     //this.setBackground(Color.CYAN);
     this.resize(600,400);
    
     Dimension size=this.getSize();
int wid=(int)size.getWidth();
int hei=(int)size.getHeight();                    

hei=80*hei/100;
wid=80*wid/100;
    
g.translate(1*wid/8,1*hei/8);
g.drawRect(0,0,wid,hei);
g.setColor(Color.BLACK);
g.fillRect(0,0,wid,hei);
    
int[]   pixels=new   int[wid*hei];          
        
         abc=new int[wid][hei];
        for(int i=0;i<wid;i++)
        {
         for(int j=0;j<hei;j++)
         {
         abc[i][j]=(i+1)*(j+1);
         }
        }
        max=abc[wid-1][hei-1];
        for(int j=0;j<hei;j++)
        {
         for(int i=0;i<wid;i++)
         {
         pixels[j*wid+i]=255*abc[i][j]/max;
         }
        }
        
        Image pic=createImage
                  (new   MemoryImageSourc(wid,hei,pixels,0,wid));    
        g.drawImage(pic,0,0,this);   //显示黑白图片   
      
        repaint(); 
    } 
}

解决方案 »

  1.   

    嗯,是由于刷新的频率引起的,参考使用离屏图像缓冲,重写update()方法,参考代码如下:
    public void update(Graphics g) {
    if (offScrImage == null) {
    offScrImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);
    }
    Graphics gOffScrImage = offScrImage.getGraphics();
    Color c = gOffScrImage.getColor();
    gOffScrImage.setColor(Color.GREEN);
    gOffScrImage.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);
    gOffScrImage.setColor(c);
    paint(gOffScrImage);
    g.drawImage(offScrImage, 0, 0, null); }
    其中GAME_WIDTH, GAME_HEIGHT为屏幕的宽度和长度的两个常量.