Как и в других ответах, в недавнем GUI, который я создал, я использовал CardLayout для выполнения этой задачи.
Решение простое: в вашем родительском JFrame есть одна панель, которая будет содержать CardLayout, и когда вы добавляете каждую панель, которую хотите показать, вы связываете с ней строку, чтобы вы могли получить ее позже, например:
panelManager.add(typeSelectionView, TYPEVIEW);
Где panelManager - это моя JPanel, содержащая мой макет (который вы должны добавить до этого, чтобы использовать метод add ().
Убедитесь, что вы храните эти строки, которые идентифицируют ваши скрытые панели в той или иной форме, как я здесь с моими конечными переменными, и когда приходит время показать эту панель, которая скрыта в макете, просто вызовите:
cl.show(panelManager, newPanel);
Где, в моем случае, newPanel был рассчитан контроллером и передан в представление. Он использует финальные статические строки в классе представления.