Пожалуйста, отметьте этот демонстрационный проект , показывающий, как использовать CardLayout с IntelliJ IDEA GUI Designer.
![CardLayout 1](https://i.stack.imgur.com/M1yaD.png)
![CardLayout 2](https://i.stack.imgur.com/aRcfI.png)
Основная форма имеет метод, который переключается между 2 формами, отображаемыми внутри:
public void showPanel(String id) {
final CardLayout cl = (CardLayout) cardPanel.getLayout();
cl.show(cardPanel, id);
}
Обе формы добавляются в макет карты при инициализации основной формы:
FormOne one = new FormOne();
one.setParentForm(this);
cardPanel.add(one.getPanel(), FORM_ONE);
FormTwo two = new FormTwo();
two.setParentForm(this);
cardPanel.add(two.getPanel(), FORM_TWO);
final CardLayout cl = (CardLayout) cardPanel.getLayout();
cl.show(cardPanel, FORM_ONE);
Ссылка на основную родительскую форму передается этим двум формам с использованием метода setParentForm()
, чтобы классы FormOne
и FormTwo
могли получить доступ к методу showPanel()
MainForm
.
В более простом случае у вас может быть кнопка или другой элемент управления, который переключает формы
расположенный непосредственно на MainForm
, вам может не понадобиться передавать основную ссылку на форму подчиненным формам, но это может быть полезно в зависимости от логики вашего приложения.