public static void paintCheckedBackground(Component c,Graphics g,int x,int y,int width,int height){
  if (backgroundImage == null) {
    backgroundImage=new BufferedImage(64,64,BufferedImage.TYPE_INT_ARGB);
    Graphics bg=backgroundImage.createGraphics();
    for (int by=0; by < 64; by+=8) {
      for (int bx=0; bx < 64; bx+=8) {
        bg.setColor(((bx ^ by) & 8) != 0 ? Color.lightGray : Color.white);
        bg.fillRect(bx,by,8,8);
      }
    }
    bg.dispose();
  }
  if (backgroundImage != null) {
    Shape saveClip=g.getClip();
    Rectangle r=g.getClipBounds();
    if (r == null)     r=new Rectangle(c.getSize());
    r=r.intersection(new Rectangle(x,y,width,height));
    g.setClip(r);
    int w=backgroundImage.getWidth();
    int h=backgroundImage.getHeight();
    if (w != -1 && h != -1) {
      int x1=(r.x / w) * w;
      int y1=(r.y / h) * h;
      int x2=((r.x + r.width + w - 1) / w) * w;
      int y2=((r.y + r.height + h - 1) / h) * h;
      for (y=y1; y < y2; y+=h)       for (x=x1; x < x2; x+=w)       g.drawImage(backgroundImage,x,y,c);
    }
    g.setClip(saveClip);
  }
}

public static void paintCheckedBackground ( Component c , Graphics g , int x , int y , int width , int height ) { if ( backgroundImage == null ) { backgroundImage = new BufferedImage ( 64 , 64 , BufferedImage . TYPE_INT_ARGB ) ; Graphics bg = backgroundImage . createGraphics ( ) ; for ( int by = 0 ; by < 64 ; by += 8 ) { for ( int bx = 0 ; bx < 64 ; bx += 8 ) { bg . setColor ( ( ( bx ^ by ) & 8 ) != 0 ? Color . lightGray : Color . white ) ; bg . fillRect ( bx , by , 8 , 8 ) ; } } bg . dispose ( ) ; } if ( backgroundImage != null ) { Shape saveClip = g . getClip ( ) ; Rectangle r = g . getClipBounds ( ) ; if ( r == null ) r = new Rectangle ( c . getSize ( ) ) ; r = r . intersection ( new Rectangle ( x , y , width , height ) ) ; g . setClip ( r ) ; int w = backgroundImage . getWidth ( ) ; int h = backgroundImage . getHeight ( ) ; if ( w != - 1 && h != - 1 ) { int x1 = ( r . x / w ) * w ; int y1 = ( r . y / h ) * h ; int x2 = ( ( r . x + r . width + w - 1 ) / w ) * w ; int y2 = ( ( r . y + r . height + h - 1 ) / h ) * h ; for ( y = y1 ; y < y2 ; y += h ) for ( x = x1 ; x < x2 ; x += w ) g . drawImage ( backgroundImage , x , y , c ) ; } g . setClip ( saveClip ) ; } }
paint a check pattern , used for a background to indicate image transparency .
