Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Разметка Компонентов В пределах Контейнера
Как Использовать CardLayout
Домашняя страница > Создание GUI С JFC/Swing > Разметка Компонентов В пределах Контейнера

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


Отметьте: Эти покрытия урока, пишущий расположение кодируют вручную, который может быть стимулирующим. Если Вы не интересуетесь изучением всех деталей управления расположением, Вы могли бы предпочесть использовать GroupLayout менеджер по расположению объединился с инструментом разработчика, чтобы разметить Ваш GUI. Один такой инструмент разработчика является IDE NetBeans. Иначе, если Вы хотите кодировать вручную и не хотите использовать GroupLayout, тогда GridBagLayout рекомендуется как следующий самый гибкий и мощный менеджер по расположению.

Если Вы интересуетесь использованием JavaFX, чтобы создать Ваш GUI, см. Работу С Разметками в JavaFX.

Следующее число представляет снимок приложения, которое использует CardLayout class, чтобы переключиться между двумя панелями.

Снимок CardLayoutDemo Другой снимок CardLayoutDemo

Нажмите кнопку Launch, чтобы работать, CardLayoutDemo, используя Сеть Java™ Запускаются (Java загрузки SE). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает приложение CardLayoutDemo

Полный код этого демонстрационного примера находится в CardLayoutDemo.java файл.

CardLayout class управляет двумя или больше компонентами (обычно JPanel экземпляры), которые совместно используют то же самое выставочное пространство. При использовании CardLayout class, позвольте пользователю выбирать между компонентами при использовании поля комбинированного списка. CardLayoutDemo приложение является примером, чтобы иллюстрировать эту функцию.

Другой способ выполнить ту же самую задачу состоит в том, чтобы использовать снабженную вкладками область. Следующее изображение показывает снабженную вкладками версию области предыдущего примера:

Снимок TabDemo

Поскольку снабженная вкладками область обеспечивает свой собственный GUI, используя снабженную вкладками область более прост чем использование CardLayout class. Например, реализация предыдущего примера, используя снабженную вкладками область приводит к программе с меньшим количеством строк кода.

Нажмите кнопку Launch, чтобы работать, TabDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить пример самостоятельно, консультируйтесь, пример индексируют.

Запускает приложение TabDemo

Полный код этого демонстрационного примера находится в TabDemo.java файл.

Концептуально, каждый компонент это a CardLayout управляет походит на игральную карту или торговую карту в стеке, где только главная карта видима в любое время. Можно выбрать карту, которая показывает любым из следующих способов:

CardLayoutDemo class использует последнюю схему.

Следующий фрагмент кода от CardLayoutDemo.java приложение создает CardLayout возразите и компоненты, которыми это управляет.

//Where instance variables are declared:
JPanel cards;
final static String BUTTONPANEL = "Card with JButtons";
final static String TEXTPANEL = "Card with JTextField";

//Where the components controlled by the CardLayout are initialized:
//Create the "cards".
JPanel card1 = new JPanel();
...
JPanel card2 = new JPanel();
...

//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(card1, BUTTONPANEL);
cards.add(card2, TEXTPANEL);

Добавить компонент к контейнеру это a CardLayout объект управляет, определите строку, которая идентифицирует добавляемый компонент. Например, в этом демонстрационном примере, у первой панели есть строка "Card with JButtons", и у второй панели есть строка "Card with JTextField". В этом демонстрационном примере те строки также используются в поле комбинированного списка.

Выбрать который компонент a CardLayout возразите шоу, помещенному дополнительному коду в Вашем примере кода:

//Where the GUI is assembled:
//Put the JComboBox in a JPanel to get a nicer look.
JPanel comboBoxPane = new JPanel(); //use FlowLayout
String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL };
JComboBox cb = new JComboBox(comboBoxItems);
cb.setEditable(false);
cb.addItemListener(this);
comboBoxPane.add(cb);
...
pane.add(comboBoxPane, BorderLayout.PAGE_START);
pane.add(cards, BorderLayout.CENTER);
...

//Method came from the ItemListener class implementation,
//contains functionality to process the combo box item selecting
public void itemStateChanged(ItemEvent evt) {
    CardLayout cl = (CardLayout)(cards.getLayout());
    cl.show(cards, (String)evt.getItem());
}

Этот пример показывает это, чтобы использовать show метод CardLayout class, следует установить в настоящий момент видимый компонент. Первый параметр в show метод является контейнером CardLayout средства управления — то есть, контейнер компонентов CardLayout управляет. Вторым параметром является строка, которая идентифицирует компонент, чтобы показать. Эта строка является той же самой строкой, которая использовалась, добавляя компонент к контейнеру.

API CardLayout

Следующая таблица приводит CardLayout Методы class, которые используются, чтобы выбрать компонент. Для каждого метода первым параметром является контейнер для который CardLayout менеджер по расположению (контейнер карт CardLayout средства управления).

Метод Цель
first (Container parent) Зеркальные отражения к первой карте контейнера.
next (Container parent) Зеркальные отражения к следующей карте контейнера. Если в настоящий момент видимая карта является последней, этот метод зеркальные отражения к первой карте в расположении.
previous (Container parent) Зеркальные отражения к предыдущей карте контейнера. Если в настоящий момент видимая карта является первой, этот метод зеркальные отражения к последней карте в расположении.
last (Container parent) Зеркальные отражения к последней карте контейнера.
show (Container parent, String name) Зеркальные отражения к компоненту, который был добавлен к этому расположению с указанным name, использование addLayoutComponent метод.

Примеры то Использование CardLayout

Только один пример в этом следе использование CardLayout, и это CardLayoutDemo. Обычно, наше использование в качестве примера снабженные вкладками области вместо CardLayout, так как снабженная вкладками область обеспечивает свой собственный GUI.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Использовать BoxLayout
Следующая страница: Как Использовать FlowLayout