Ho scritto questo codice, pensavo bastasse per impostare lo sfondo al pannello con lo scroll, ma mi sbagliavo. Sapete darmi una mano a correggerlo?

codice:
public class backgroundedScrollPanel extends javax.swing.JScrollPane
{
    protected Image img;

    public backgroundedScrollPanel(String localURL)
    {
        super();
        try
        {this.img = ImageIO.read(getClass().getResource(localURL));}
        catch (IOException ex)
        {System.out.print("Impossibile leggere l'immagine per creare il pane \n");}
    }

    public void setImage(String immagine)
    {
       try
        {this.img = ImageIO.read(getClass().getResource(immagine));}

        catch (IOException e)
        {System.out.print("Impossibile caricare l'immagine per creare il pane \n");}
    }

    @Override
    /* override del metodo paintComponent: questo metodo viene chiamato automaticamente per questo e-
     * lemento grafico ogni volta che esso viene disegnato sullo schermo. Noi non facciamo altro  che
     * disegnare esclusivamente un'immagine delle stesse dimensioni del pane                   */

   protected void paintComponent(Graphics g) {
        if (img == null) {
            super.paintComponent(g);
            System.out.print("Impossibile caricare l'immagine per creare il pane \n");
        } else {
            int panelWidth = getWidth();
            int panelHeight = getHeight();

             g.drawImage(img,0,0,panelWidth,panelHeight,null);

                }
            }

}