[RESOLVIDO]JFrame devia chamar JPanel que está em classe diferente, mas ele não aparece

Oi gente, sou nova no fórum e ficaria muito grata se vocês me ajudassem com isso.
Gostaria de fazer uma interface gráfica para meu programa utilizando um JFrame como janela principal, contendo o menu com vários itens. Quando o usuário clicar em um item de menu, deveria abrir dentro do JFrame um JPanel correspondente ao item selecionado.
Isso funcionou muito bem quando criei um formulário JFrame no Netbeans e adicionei 3 JPanel nele.
Mas eu gostaria que cada JPanel fosse uma classe, sendo assim, a ação do item de menu chamaria a classe JPanel referente a ele e ele abriria dentro da Frame principal. O problema é que o JPanel não aparece. Tentei chamá-lo como chamo outro JFrame, mas não funciona.Espero que possam me ajudar.

Classe Principal

[code]package projeto1;

public class principal {

public static void main(String[] args) {
    new JanelaPrincipal().setVisible(true);
}

}
[/code]
Janela principal

package projeto1;

public class JanelaPrincipal extends javax.swing.JFrame {

    public JanelaPrincipal() {
        initComponents();
    }


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jMenu1.setText("File");

        jMenuItem1.setText("jMenuItem1");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Edit");
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 279, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        new PainelSecundario().setVisible(true);
    }

    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JanelaPrincipal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    // End of variables declaration

}

Painel


package projeto1;



public class PainelSecundario extends javax.swing.JPanel {

   
    public PainelSecundario() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jButton1 = new javax.swing.JButton();

        jButton1.setText("jButton1");

        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(149, 149, 149)
                .addComponent(jButton1)
                .addContainerGap(178, 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(jButton1)
                .addGap(89, 89, 89))
        );
    }// </editor-fold>

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PainelSecundario().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    // End of variables declaration

}

P.S Tentei usar JDesktop e JInternalFrame mas não consegui =/

Olá, você quer jogar outro painel “por cima” ao clicar num botão?

Dê uma olhada no CardLayout [1], ele oferece exatamente o que você quer. Se preferir, pode trabalhar com JInternalFrame, mas aí não exatamente o que você deseja.

[1] http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html