Yo he estado haciendo algo similar. Te cuento un poco, a ver si me explico bien (que no es uno de mis fuertes), por si ello te pueda dar una idea:
- Tengo un frame que está siempre abierto.
- En ese frame hay dos elementos principales:
- Un menú, que es siempre el mismo
- Un panel, que es donde voy mostrando las cosas, según clicke en el menu
- El menu lo "dibujo" una vez, y queda así hasta que cierro el programa
- Cada vez que pincho en un elemento del menu, muestro una determinada clase JPanel. Es decir, asigno con algo similar: frame.add(panel_1, BorderLayout.CENTER);
- Para la comunicación entre el Frame (el padre), y los diferentes hijos (los panel) uso una interfaz, donde están los metedos "añadirPanel", "cerrarPanel", ect, implementados en el frame principal. Esto me permite que un panel pueda crear otro panel (para implementar una secuencia de paneles, por ejemplo, cuando vas introduciendo datos y pinchando en "siguiente").
En resumen, la idea es:
- Frame que está siempre abierto que contiene:
- Menu que se dibuja una sóla vez
- Panel que es el que va mostrando la información, el único que cambia.
No sé si me he explicado bien. Espero que te sea de ayuda.