Sì... l'idea è quella di avere già tutti i pannelli (anche quelli non visibili) già allocati e pronti per essere visualizzati.

Chiaramente, si può anche evitare di fare questo, allocando sul "PanelCard" (continuo a chiamarlo così per semplicità) solo il pannello inizialmente visibile e andando ad allocare dinamicamente (su richiesta) il nuovo pannello da visualizzare e renderlo subito visibile.

Un esempio molto scarno:

codice:
CardLayout cardLayout = new CardLayout();
JPanel panelCard = new JPanel( cardLayout );

// Situazione iniziale
PrimoPannello primoPannello = new PrimoPannello( ... )
panelCard.add(primoPannello, "0");
Clicco su un pulsante il quale richiama il metodo "mostraSecondoPannello":

codice:
public void mostraSecondoPannello() {
   secondoPannello = new SecondoPannello( ... );
   panelCard.add(secondoPannello, "1");
   cardLayout.show(panelCard, "1");
}
Eventualmente posso "deallocare" quello non visibile, se proprio necessito di risparmiare quanta più memoria possibile; altrimenti posso decidere di lasciarlo allocato così è già pronto all'uso in caso si successiva rivisualizzazione (evito, così, l'overhead di dover ricostruire nuovamente un pannello che ho già costruito).


Ciao.