La verdad no creo que sea posible agregar un JFrame dentro de un JPanel, ya que los JFrame hacen que aparezca un botón adicional en la barra de tareas (aparece 1 por cada JFrame). Pero lo que sí, es que existen los JInternalFrame, que pueden agregarse a los JDesktopPane, que aunque no son JPanel pueden agregarse a los JFrame.
Acá un código ejemplo
(extraído de chuidiang.org, sólo que le cambié un poco lo que decían los comentarios):
package Principal;
import java.awt.FlowLayout;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
/**
* Se instancia un JFrame y un JDesktopPane,
* y dentro de este último se agrega un JInternalFrame.
*/
public class Main {
@SuppressWarnings("ResultOfObjectAllocationIgnored")
public static void main
(String[] args
) { new Main();
}
public Main()
{
// Instanciación de JFrame y JDesktopPane.
v.getContentPane().add(dp);
// Panel que irá dentro del JInternalFrame.
p.
add (new JLabel("Una etiqueta"));
// Se construye el JInternalFrame y se le agrega el panel.
internal.add(p);
// Podemos asignar el tamaño con setSize,
// o usar pack para que se asigne el tamaño mínimo adecuado.
internal.pack();
// Por defecto un JInternalFrame no es redimensionable ni
// tiene el botón de cerrar, así que se lo agregamos:
internal.setResizable(true);
internal.setClosable(true);
// Se agrega el JInternalFrame en el JDesktopPane.
dp.add(internal);
// Asignamos tamaño al JFrame y lo hacemos visible.
v.setSize(500,500);
v.setVisible(true);
// Hacemos visible al JInternalFrame.
internal.setVisible(true);
}
}