Colocar Imagem em um Objeto (tela de fundo) carregada por um JFileChooser [RESOLVIDO]

Olá pessoal, apesar de ser um assunto com vários tópicos já postados. Me deparei com um problema:

Estou usando um JFilechooser para pegar uma imagem (usei o código do site da sun). A imagem selecionada pelo ficheiro será amostrada em um JinternalFrame (q esta em um JdesktopPane) que posteriormente aplicarei operações na imagem usando a JAI.
A pergunta é:
O que usar no JinternalFrame para amostrar a imagem? e como fazer funcionar?Até o momento tentei usar um Jlabel (em um Jpane), Jscroollpane… mas não conseguir fazer funcionar.
Estou usando o NetBeans.
Tenho um botão chamado “Carregar imagem” (no menuBar) que chama o seguinte procedimento:
Chamando o metodo para carregar imagem (Jfilechooser)

private void jMenuArqCarregarImagemActionPerformed(java.awt.event.ActionEvent evt) {                                                       
        new Inicio().actionPerformed(evt);   
}                                                      

Onde “Inicio” é o meu JFrame (principal) e também o nome dado a minha classe.

Metodo para carregar a imagem, este metodo faz referencia para outras classes como de filtro por exemplo.

public void actionPerformed(ActionEvent e) {
        
        //Set up the file chooser.
        if (fc == null) {
            fc = new JFileChooser();
            fc.addChoosableFileFilter(new ImageFilter());
            fc.setAcceptAllFileFilterUsed(false);
            fc.setFileView(new ImageFileView());
            fc.setAccessory(new ImagePreview(fc));
        }

        //Show it.
        int returnVal = fc.showDialog(this, "Carregar imagem");

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fc.getSelectedFile();

            Image imagem = Toolkit.getDefaultToolkit().getImage(file.getAbsolutePath());              
            ImageIcon icon = new ImageIcon(imagem); 

            jLabelImagem = new JLabel(icon);  
            jLabelImagem.setSize(new Dimension(icon.getIconWidth(), icon.getIconHeight()));   
 
            jPanel1.add(jLabelImagem); /*<--- (Achei q isso funciona-se)*/
            jInternalFrame1.setVisible(true);
        }       
}            

Estas sao as variáveis q o netbeans colocou no código:

   private javax.swing.JDesktopPane jDesktopPane1;
    private javax.swing.JInternalFrame jInternalFrame1;
    private javax.swing.JLabel jLabelImagem;
    private javax.swing.JMenu jMenuArq;
    private javax.swing.JMenuItem jMenuArqCarregarImagem;
    private javax.swing.JMenuItem jMenuArqSair;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JSeparator jSeparator1;

Alguem me Ajude ??? Qualquer tentativa será bem vinda. Obrigado pessoal.

Oi. Aquela linha funciona sim.

Mas dá uma lida no javadoc:
“Note: If a component has been added to a container that has been displayed, validate must be called on that container to display the new component. If multiple components are being added, you can improve efficiency by calling validate only once, after all the components have been added.”

Então, no final do método faça um

Outra coisa. É bom remover também a imagem que já está lá, caso exista alguma. Ou então, você pode substituir o seu painel por esse painel aqui:
http://www.guj.com.br/posts/list/56248.java#295271

Quanto a forma de carregar imagem. É preferível usar:

Obrigado pela ajuda Vini.
Más a única forma que fez funcionar foi colocar:

ficando assim:

public Inicio() { initComponents(); super.setVisible(true); jInternalFrame1.setVisible(false); setExtendedState(MAXIMIZED_BOTH); }

Obrigado pelas dicas e sugestões.