Add a background image to a JTable

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
 
public class BackgroundTable 
{ 
   public static void main(String[] args) {
      JFrame frame = new JFrame("Table Example"); 
      frame.addWindowListener( new WindowAdapter() { 
         public void windowClosing(WindowEvent e) 
         { 
            Window w = e.getWindow(); 
            w.setVisible(false); 
            w.dispose(); 
            System.exit(0); 
         } 
      }); 
 
      JTable imTable = new JTable(35, 3) { 
         public Component prepareRenderer(TableCellRenderer renderer, int row, int column) 
         { 
            Component c = super.prepareRenderer( renderer, row, column); 
            // We want renderer component to be 
            //transparent so background image is visible 
            if( c instanceof JComponent ) 
               ((JComponent)c).setOpaque(false); 
            return c; 
         }
   
         public void paint( Graphics g ) 
         { 
            ImageIcon image = new ImageIcon("FIREFALL.gif"); 
            // tile the background image 
            Dimension d = getSize(); 
            for( int x = 0; x < d.width; x += image.getIconWidth() ) 
            for( int y = 0; y < d.height; y += image.getIconHeight() ) 
            g.drawImage( image.getImage(), x, y, null, null ); 
            // Now let the paint do its usual work 
            super.paint(g); 
         } 
      }; 
 
      //make the table transparent 
      imTable.setOpaque(false); 
 
      JScrollPane jsp = new JScrollPane(imTable); 
      frame.getContentPane().add(jsp); 
 
      frame.pack(); 
      frame.show(); 
   } 
}