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

Предисловие (это сообщение с автоответчиком)

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

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

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

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

  1. С новой формой JButtons добавьте JPanel , несколько JButtons к форме, чтобы она выглядела так:

    введите описание изображения здесь

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

    введите описание изображения здесь

  2. Теперь мы разместим макет mainPanel на CardLayout . Дважды щелкните по mainPanel в навигаторе, чтобы он был виден сам по себе в дизайне. Затем щелкните его правой кнопкой мыши в навигаторе и выберите « Установить макет» -> «Карта» . Теперь ваш навигатор должен выглядеть следующим образом:

    введите описание изображения здесь

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

    введите описание изображения здесь

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

    введите описание изображения здесь

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

    введите описание изображения здесь

    Примечание. В любое время вы можете изменить положение макета, например, вы хотите, чтобы panelTwo сначала отображалась, а не panelOne . Просто щелкните правой кнопкой мыши на mainPanel и выберите « Изменить порядок» . Вы можете перемещать панели вверх или вниз по порядку.

  5. Мы почти закончили. Нам просто нужно добавить слушателей к кнопкам для переключения между панелями в CardLayout . Поэтому дважды щелкните по кадру с навигатора. Теперь вы должны увидеть кнопки. Щелкните правой кнопкой мыши на кнопке Panel One . и выберите Events -> Action -> actionPerformed . Вы должны увидеть автоматически сгенерированный код в представлении исходного кода. Добавьте этот fragment кода

     private void jbtPanelOneActionPerformed(ActionEvent evt) { CardLayout card = (CardLayout)mainPanel.getLayout(); card.show(mainPanel, "panelOne"); } 

    Сделайте это для других двух кнопок, убедившись, что вы передаете правильное имя соответствующей панели методу show .

Если вы выполнили 5 шагов выше, ваша программа должна работать следующим образом.

введите описание изображения здесь


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

введите описание изображения здесь

  • Как изменить цвет JProgressBar?
  • Как разместить компонент поверх других?
  • JTextArea не выбирается, но все еще отображается курсор «призрак»
  • Что делает super.paintComponent (g)?
  • Перемещение JLabel в другой JLabels - GUI
  • Коробка масштабирования для области вокруг местоположения мыши на экране
  • Как проверить JTextField?
  • JProgressBar не прогрессирует
  • как добавить разные элементы JComboBox в столбце JTable в Swing
  • Как работает paintComponent?
  • JTable, RowFilter и RowFilter.Entry
  • Давайте будем гением компьютера.