Подтвердить что ты не робот

Как использовать CardLayout с NetBeans GUI Builder

Предисловие (это сообщение саморегуляции)

Я устал от работы с NetBeans GUI Builder, но я просто не начинаю погружаться в него, чтобы узнать более сложные детали. Я действительно даже не знал, что нужно сменить менеджер компоновки с дизайнерского вида, я просто передам его код. Поэтому я попробовал обратиться в справочную службу Google, спросив "Как использовать разные менеджеры макетов в NetBeans GUI Builder" и неожиданно нашел zilch в первых парах страниц результатов. В Eclipse Window Builder из палитры вы можете перетаскивать разные менеджеры макетов, поэтому почему бы не использовать GUI Builder. Послушайте, после нескольких часов поиска я нашел волшебный Set Layout из контекстного меню компонента контейнера. Теперь я готов править миром!

Я подумал, что я вставляю некоторые уроки о том, как использовать разные менеджеры макетов из GUI Builder, здесь, на SO, поэтому другие не будут лысать, разрывая их волосы, пытаясь понять, что я, что я выяснил для себя, После завершения первого учебника по CardLayout (ниже) я готов опубликовать свои усилия и напечатать заголовок страницы Задавать вопрос, "Как использовать CardLayout с Builder Builder NetBeans". Что...!!. На этот вопрос уже был задан вопрос!!. Наверное, я должен был уточнить свой запрос Google. DOHH!

В любом случае, теперь у меня есть этот учебник, который по-прежнему более информативен, чем те, которые содержатся в других ответах, поэтому мои усилия не будут потрачены впустую (так я говорю себе: D). Может быть, я сделаю серию этих ловок. Посмотрим. На данный момент наслаждайтесь Как использовать CardLayout: P

4b9b3361

Ответ 1

Как использовать CardLayout

  • С новой формой JFrame добавьте

    JPanel, несколько JButtons в форму, чтобы она выглядела как

    enter image description here

    Панель навигатора должна выглядеть так. Заметьте, что я изменил имена переменных. Вы можете сделать это, щелкнув правой кнопкой мыши на компоненте из навигатора и выбрав имя переменной изменения.

    enter image description here

  • Теперь мы разместим макет mainPanel на CardLayout. Дважды щелкните по значку mainPanel в навигаторе, чтобы он отображался сам по себе в представлении дизайна. Затем щелкните его правой кнопкой мыши в навигаторе и выберите Установить макет → CardLayout. Теперь ваш навигатор должен выглядеть так:

    enter image description here

  • Теперь мы добавим разные JPanels в mainPanel. Просто щелкните правой кнопкой мыши по mainPanel в навигаторе и выберите Добавить из палитры → Контейнеры Swing → JPanel. Сделайте это три раза, чтобы у вас было три разных JPanels. Я также изменил их имена переменных. Ваш навигатор не должен выглядеть так.

    enter image description here

  • Часть макета установлена, но позволяет добавлять некоторые ярлыки, чтобы мы могли различать JPanels, а также менять имя своей карты. Поэтому дважды нажмите panelOne в навигаторе. Вы увидите панель в дизайне. Просто перетащите его JLabel и отредактируйте текст метки Panel One. Сделайте это для двух других, также называя их ярлыки соответственно. Когда вы закончите, ваш навигатор должен выглядеть так.

    enter image description here

    Мы также хотим изменить имя панелей, которые были указаны как ссылки CardLayout. Мы можем сделать это, дважды щелкнув по одной из панелей (panelOne) и перейдя в панель свойств. Там внизу вы увидите свойство Card Name. Просто измените его на все, что захотите, я использовал panelOne. Сделайте это для двух других JPanel

    enter image description here

    Примечание. В любое время вы можете изменить положение макета, например, хотите, чтобы вместо 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 шагов выше, ваша программа должна работать следующим образом.

enter image description here


Также можно перетащить классы классов класса JPanel другого класса на ваш mainPanel, если у вас есть другие, которые вы хотели бы использовать. Это может быть предпочтительным подходом для более крупных нетривиальных случаев, чтобы избежать сгустких классов.

enter image description here