Hola:
Haz un JPanel distinto para cada una de las aplicaciones. Guarda en algún sitio una variable por cada aplicacion para guardar el panel, pero inicializa esas variables a null, no hagas los new todavía
Código:
JPanelAplicacion1 panel1=null;
JPanelAplicacion2 panel2=null;
Haz un JPanel con los botones que arrancarían cada una de las aplicaciones.
Haz un JFrame con un
BorderLayout. En el NORTH del BorderLayout pon el JPanel con los botones. No añadas de momento ningún JPanel de aplicación en el CENTER.
Cada vez que se pulse un botón, deberías hacer lo siguiente:
- Ver si había una aplicación anteriormente arrancada. Debes entonces retirar el panel correspondiente del JFrame, usando el método remove().
- Ver si la nueva aplicación ya se había instanciado alguna vez (basta ver si el panel correspondiente es null o no). Si no se había instanciado, haz el new del panel correspondiente a la aplicación y añadelo al frame (add(panel.BorderLayout.CENTER). Si ya se había instanciado, reutiliza el panel que deberías tener guardado en algún sitio.
- Guarda dicho panel el alguna variable auxiliar, de forma que luego puedas hacer el remove de dicho panel.
Se bueno.