Originariamente inviato da Salinas
Come posso fare?
Se tieni un unico JFrame, l'utente vede sempre e solo quella finestra "fisica" e cambia esclusivamente il suo contenuto.

Gli approcci sono diversi:

a) In un "contenitore" che ha un CardLayout metti tutti gli N componenti nel contenitore e poi mostri quello che vuoi usando show() di CardLayout. CardLayout come puoi intuire è un layout manager che mostra sempre solo 1 tra N componenti. È fatto apposta solo per questo ....

b) Gestisci tu lo scambio dei componenti. E qui si può fare in svariati modi a seconda dell'uso o no di un layout manager.
- Se non usi un layout manager (cioè posizioni/dimensioni in modo "assoluto" i componenti) puoi "giocare" sulla visibilità. Li metti tutti virtualmente sovrapposti e poi usi appropriatamente setVisibile con true/false per nasconderne uno e visualizzarne un altro.
- Se usi un layout manager, se consente di posizionare i componenti virtualmente sovrapposti potresti "giocare" anche qui sulla visibilità. Altrimenti dovresti rimuovere effettivamente un componente dal contenitore e poi aggiungerne un altro. Ma devi anche "rivalidare" il layout (perché cambi il layout dopo che il contenitore è già visibile). Tipicamente basta un validate() sul container, almeno per i layout manager più semplici.

Alla fin fine per l'approccio b) o giochi sulla visibilità dei componenti (tutti sempre contenuti in un contenitore) o giochi sul rimuovere/aggiungere componenti in un contenitore.