Ответ 1
Как использовать CardLayout
-
С новой формой
JFrame
добавьтеJPanel
, несколькоJButtons
в форму, чтобы она выглядела как
Панель навигатора должна выглядеть так. Заметьте, что я изменил имена переменных. Вы можете сделать это, щелкнув правой кнопкой мыши на компоненте из навигатора и выбрав имя переменной изменения. -
Теперь мы разместим макет
mainPanel
наCardLayout
. Дважды щелкните по значкуmainPanel
в навигаторе, чтобы он отображался сам по себе в представлении дизайна. Затем щелкните его правой кнопкой мыши в навигаторе и выберите Установить макет → CardLayout. Теперь ваш навигатор должен выглядеть так: -
Теперь мы добавим разные
JPanels
вmainPanel
. Просто щелкните правой кнопкой мыши поmainPanel
в навигаторе и выберите Добавить из палитры → Контейнеры Swing → JPanel. Сделайте это три раза, чтобы у вас было три разныхJPanels
. Я также изменил их имена переменных. Ваш навигатор не должен выглядеть так. -
Часть макета установлена, но позволяет добавлять некоторые ярлыки, чтобы мы могли различать
JPanels
, а также менять имя своей карты. Поэтому дважды нажмитеpanelOne
в навигаторе. Вы увидите панель в дизайне. Просто перетащите егоJLabel
и отредактируйте текст меткиPanel One
. Сделайте это для двух других, также называя их ярлыки соответственно. Когда вы закончите, ваш навигатор должен выглядеть так.
Мы также хотим изменить имя панелей, которые были указаны как ссылкиCardLayout
. Мы можем сделать это, дважды щелкнув по одной из панелей (panelOne
) и перейдя в панель свойств. Там внизу вы увидите свойствоCard Name
. Просто измените его на все, что захотите, я использовалpanelOne
. Сделайте это для двух другихJPanel
Примечание. В любое время вы можете изменить положение макета, например, хотите, чтобы вместоpanelTwo
отображалсяpanelTwo
вместоpanelOne
. Просто щелкните правой кнопкой мыши поmainPanel
и выберите Изменить порядок. Вы можете перемещать панели вверх или вниз по порядку. -
Мы почти закончили. Нам просто нужно добавить слушателей к кнопкам для переключения между панелями в
CardLayout
. Поэтому дважды щелкните по кадру с навигатора. Теперь вы должны увидеть кнопки. Щелкните правой кнопкой мыши по кнопкеPanel One
. и выберитеEvents -> Action -> actionPerformed
. Вы должны увидеть автоматически сгенерированный код в представлении исходного кода. Добавьте этот фрагмент кодаprivate void jbtPanelOneActionPerformed(ActionEvent evt) { CardLayout card = (CardLayout)mainPanel.getLayout(); card.show(mainPanel, "panelOne"); }
Сделайте это для двух других кнопок, убедившись, что передайте правильное имя соответствующей панели методу
show
.
Если вы выполнили 5 шагов выше, ваша программа должна работать следующим образом.
Также можно перетащить классы классов класса JPanel другого класса на ваш mainPanel
, если у вас есть другие, которые вы хотели бы использовать. Это может быть предпочтительным подходом для более крупных нетривиальных случаев, чтобы избежать сгустких классов.