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:
Clicco su un pulsante il quale richiama il metodo "mostraSecondoPannello":codice:CardLayout cardLayout = new CardLayout(); JPanel panelCard = new JPanel( cardLayout ); // Situazione iniziale PrimoPannello primoPannello = new PrimoPannello( ... ) panelCard.add(primoPannello, "0");
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).codice:public void mostraSecondoPannello() { secondoPannello = new SecondoPannello( ... ); panelCard.add(secondoPannello, "1"); cardLayout.show(panelCard, "1"); }
Ciao.![]()



Rispondi quotando