JPanel + imagem nao aparece

eh o seguinte…
tenho o codigo:

/*
 * NovoJPanel.java
 *
 * Created on 13 de Outubro de 2007, 00:35
 */

package exemplo;

import java.awt.*;
import java.net.URL;
import javax.swing.*;

/**
 *
 * @author  Luiz
 */
public class NovoJPanel extends javax.swing.JPanel {
    URL url = this.getClass().getResource("imagem/ja002.jpg");
    Image imagem = Toolkit.getDefaultToolkit().createImage(url);
    /** Creates new form NovoJPanel */
    public NovoJPanel() {
        initComponents();
    }
    
    protected void paintComponent(final Graphics g) {
        super.paintComponent(g);
        g.drawImage(imagem,10,10,300,200,null);        
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jButton1 = new javax.swing.JButton();

        addComponentListener(new java.awt.event.ComponentAdapter() {
            public void componentResized(java.awt.event.ComponentEvent evt) {
                formComponentResized(evt);
            }
        });

        jButton1.setText("repaint");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(41, 41, 41)
                .addComponent(jButton1)
                .addContainerGap(292, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(62, 62, 62)
                .addComponent(jButton1)
                .addContainerGap(109, Short.MAX_VALUE))
        );
    }// </editor-fold>                        

    private void formComponentResized(java.awt.event.ComponentEvent evt) {                                      
// TODO adicione seu código de manipulação aqui:
        this.revalidate();
        this.repaint();
    }                                     

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO adicione seu código de manipulação aqui:
        this.revalidate();
        this.repaint();
    }                                        
    
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JButton jButton1;
    // Fim da declaração de variáveis                   
    
}

esse ai em cima eh o JPanel que quero que fique com a imagem de fundo o codigo abaixo eh o JFrame que ira carregar o JPanel

/*
 * NovoJFrame.java
 *
 * Created on 13 de Outubro de 2007, 00:17
 */

package exemplo;

import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.*;

/**
 *
 * @author  Luiz
 */
public class NovoJFrame extends javax.swing.JFrame {
    URL url = this.getClass().getResource("imagem/ja002.jpg");
    Image imagem = Toolkit.getDefaultToolkit().createImage(url);
    /** Creates new form NovoJFrame */
    public NovoJFrame() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("Sortear");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel1.setText("jLabel1");

        jButton2.setText("Abrir Panel");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(171, 171, 171)
                        .addComponent(jLabel1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(156, 156, 156)
                        .addComponent(jButton1))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(148, 148, 148)
                        .addComponent(jButton2)))
                .addContainerGap(167, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(188, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(25, 25, 25)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2)
                .addGap(21, 21, 21))
        );
        pack();
    }// </editor-fold>                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO adicione seu código de manipulação aqui:
       NovoJPanel panel = new NovoJPanel();
       this.setContentPane(panel);
       panel.setVisible(true);
       this.pack();
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO adicione seu código de manipulação aqui:
        LinhaExecucao linha = new LinhaExecucao(this);
        linha.start();
    }                                        
    
    public void mostrarNumeroSorteado(int numero) {
        this.jLabel1.setText(""+numero);
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NovoJFrame().setVisible(true);
            }
        });
    }
    

    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    // Fim da declaração de variáveis                   
    
}

pronto… o problema eh esse… a imagem nao aparece logo quando inicia o JPanel… soh consigo fazer a imagem aparecer quando modifico o tamanho a janela ou qualquer outra coisa do tipo… ah sim e tb quando clico no botao que tem no JPanel e ele chama o metodo repaint()…

como eh q se faz para a imagem ser carregada logo de inicio… jah tentei de tudo mas nao consigo, ateh umas engareia de tornar o Frame invisivel e torna-lo visivel quando carregar o JPanel eu jah fiz mas a imagem nao aparece…

Eu tive um probleminha desses esses dias…resolvi com o show();

…depois do new sobre seu jpane…vc colocar o .show();

espero q ajude ^^