Adicionar componente à JPanel durante execução [resolvido]

Como faço para adicionar um componente à um JPanel durante a execução do Programa. Por exemplo,
numa tela tenho um JButton1 e um JPanel1. Quando clico no JButton1 um novo JPanel é adicionado ao JPanel1.
Procurei e não encontrei nada que ajudasse.
Fiz uns códigos que não funcionaram: aparece um monte de exceção.
Grato.

Coloque os codigos aqui para podermos ajudar. =)
Poste as exceçoes tambem.
[]`s

O código.

        /* Tenho um frame com dois botões e um painel:
        jButton1 e jButton2, jPanel1.

    Essa é a parte do código que interessa: */

public class NovoJFrame extends javax.swing.JFrame {

    JPanel p = new JPanel();
    JPanel p1 = new JPanel();
	
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        p1.setBackground(Color.BLUE); // pinta com a cor azul
        p1.setBounds(jPanel1.getBounds()); // p1 recebe as mesmas dimensões de jPanel1 (eu penso que sim)
        p1.setLayout(jPanel1.getLayout()); // p1 recebe o mesmo layout de jPanel1
        p1.setLocation(jPanel1.getLocation()); // a mesma localização
     /* tudo isso para que p1 ocupe o mesmo espaço de jPanel1 (seja sobreposto)  */
        jPanel1.add(p1); // aqui p1 é adicionado a jPanel1
        jPanel1.validate();
   	jPanel1.repaint();
    	this.repaint();
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        p.setBackground(Color.GREEN);
        p.setBounds(jPanel1.getBounds()); /* aqui vale os mesmos comentarios acima*/
        p.setLayout(jPanel1.getLayout());
        p.setLayout(jPanel1.getLayout());        
        jPanel1.add(p); // pára aqui e dispara exceções
        jPanel1.validate();
        jPanel1.repaint();
        this.validate();
        this.repaint();
    }      
}

Essa é a Exception
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
GroupLayout can only be used with one Container at a 
time

O Java está te falando que o GroupLayout só pode ser adicionado a um container por vez, quando você faz isso:

está tentando definir a mesma instancia de um layout a dois componente diferentes o p1 e o jPanel1.

Pra tentar corrigir isso é só criar um novo gerenciador de layout e adicioná-lo ao p1:

Muda aí e tenta executar de novo, se der outro erro posta o código com as exceções.

[]s

/* Fiz Duas alterações e funcionou mais ou menos:
Embora p e p1 estejam sendo adicionados à JPanel1, eles
ficam tortos. Jpanel1 tem a forma de um quadrado, p p1 aparecem 
apenas no canto inferior direito 
Que método uso para que p e p1 fiquem exatamente sobre JPanel1?*/

public class NovoJFrame extends javax.swing.JFrame {

    JPanel p = new JPanel();
    JPanel p1 = new JPanel();
 /* adicionei estas linhas */
    GroupLayout layoutP=new GroupLayout(p);
    GroupLayout layoutP1=new GroupLayout(p1);
	
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        p1.setBackground(Color.BLUE); // pinta com a cor azul
        p1.setBounds(jPanel1.getBounds()); // p1 recebe as mesmas dimensões de jPanel1 (eu penso que sim)
        p1.setLayout(layoutP1); // mudei esta linha: adicionei layoutP1        
        p1.setLocation(jPanel1.getLocation()); // a mesma localização
     /* tudo isso para que p1 ocupe o mesmo espaço de jPanel1 (seja sobreposto)  */
        jPanel1.add(p1); // aqui p1 é adicionado a jPanel1
        jPanel1.validate();
   	jPanel1.repaint();
    	this.repaint();
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        p.setBackground(Color.GREEN);
        p.setBounds(jPanel1.getBounds()); /* aqui vale os mesmos comentarios acima*/
        p.setLayout(layoutP); // mudei esta linha: adicionei layoutP        
        p.setLocation(jPanel1.getLocation());
        jPanel1.add(p); // pára aqui e dispara exceções
        jPanel1.validate();
        jPanel1.repaint();
        this.validate();
        this.repaint();
    }      
}

Essa Exception não aparece mais
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:
GroupLayout can only be used with one Container at a 
time

O problema então é com o gerenciador de layouts que vc está usando.
Aqui tem uma introdução aos principais tipos de layout: http://www.vivaolinux.com.br/artigo/Swing-e-gerenciadores-de-layout/

No site da Sun vc tb acha muito material.

Uma possibilidade é vc colocar o gerenciador como null, se for código acadêmico, e aí vc pode falar em coordenadas onde quer que os componentes fiquem com o método setLocation(), que vc pode definir onde começará seu componente, e setSize, que definirá o tamanho do componente, ou seja até onde ele vai.

Por exemplo:

p2.setLocation(30,30);
p2.setsize(100, 100);
jFrame.add(p2);

p1.setLocation(0,0);
p1.setSize(100,100);

p2.add(p1); // Aí eles tem o mesmo tamanho e, portanto ocuparão o mesmo espaço

Tenta aí, acho que vai dar certo, mas tem que cancelar os gerenciadores de layout, colocando null no setLayout().

[]s

Problema resolvido.

painel p =new painel();
/* adicionar jPanel à Jpanel */
p.setSize(new Dimension(jPanel1.getWidth(), jPanel1.getHeight()));
        jPanel1.add(p);
        jPanel1.validate();
        jPanel1.repaint(); 

/* remover */
jPanel1.remove(p);
        jPanel1.validate();
        jPanel1.repaint(); 

/* jPanel1 é o painel que está no meu frame. p é um objeto jPanel, ou seja, fiz uma classe que extende jFrame e outra que extende jPanel */