Por partes, el grid layout lo que hace es dividir el espacio que hay en las partes que le digas y adaptar los componentes a esas porciones, si cambias el tamaño se adaptan.
El gridbaglayout hace algo parecido pero bastante mas complejo, puedes poner que las cosas ocupen filas enteras o columnas y combinaciones muy curradas.
Para lo que quieres hacer lo que mejor te viene es el Cardlayout, este es un layout que te permite de un conjunto de 10 paneles, mostrar solo el que tu quieras, no tienes que andar con mostrar ocultar cada uno, tu dices cual quieres que se muestre y los demas se ocultan, no tiene pestañas ni nada.
Un ejemplo podría ser (habiendo declarado layoutContenido como Cardlayout a null):
private JPanel getPanelContenido() {
if (panelContenido == null) {
panelContenido = new JPanel();
layoutContenido = new CardLayout();
panelContenido.setLayout(layoutContenido);
panelContenido.add(getPanelCargando(), "panelCargando");
panelContenido.add(getPanelClientes(), "panelClientes");
panelContenido.add(getPanelProductos(), "panelProductos");
panelContenido.add(getPanelFacturas(), "panelFacturas");
panelContenido.add(getPanelAlbaranes(), "panelAlbaranes");
panelContenido.add(getPanelProveedores(), "panelProveedores");
}
return panelContenido;
}
En cada add pasas el panel, y el nombre que quieres ponerle, luego en el actionperformed del boton va:
layoutContenido.show(panelContenido, "panelAlbaranes");
que es el panel en el que quieres mostrarlo, es decir, el panel contenedor, y el nombre del panel que quieres activar.
Tendrías un panel para cada sección de pizza y todo eso, y luego puedes poner uno general que sera el que actives al principio.
No se si habrá sido muy claro pero siempre puedes buscar un poco mas sobre el Cardlayout.