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.