6.4 Размещение контейнеров (часть 4)

6.4.6 Менеджер CardLayout

CardLayout может хранить стек нескольких размещений. Каждое размещение похоже на карту. Карта - обычно объект Панели. Карта, которая будет отображена на вершине, управляется отдельным компонентом типа кнопки.

Это размещение используется всякий раз, когда мы нуждаемся в числе панелей каждой с различным размещением, которое будет отображено один за другим. Следующий фрагмент кода изображает шаг за шагом процедура осуществления CardLayout. Сначала, набор требуемых компонентов позиционируется на соответствующих панелях. Для каждой панели установлено различное размещение.
panelTwo.setLayout(new GridLayout(2,1));

Главная панель будет содержать эти панели. Размещение главной панели установлено в CardLayout. Это делается следующим образом:
CardLayout card = new CardLayout(); panelMain.setLayout(card);

Следующий шаг должен добавить другие панели к главной панели. Следующий фрагмент кода показывает как это может быть сделано
panelMain.add( Red Panel , pane1One);
panelMain.add( Green Panel , panelTwo);

Метод 'add () ', передаёт два параметра. Первый - Строка для заголовка панели, а второй - название объекта Панели.

Обычно кнопка используется, чтобы показывать, какая панель будет отображена. actionListener добавляется к кнопке. Метод actionPerformed () может определить, какая отобразиться карта. Это решается с помощью методов, данных ниже:
card.next(panelMain);
card.previous(panelMain);
card.first(panelMain);
card.last(panelMain);
card.show(panelMain, Red Panel ); //A particular panel

В следующей главе мы подробнее обсудим actionListener и actionPerformed().

Рисунки 6.12 и 6.13 показывают вывод, когда выбраны различные карты.

Рисунок 6.12: Размещение карты             Рисунок 6.13: Размещение карты

6.4.7 Создание сложного размещения

Иногда не может быть адекватно использоваться только одно размещение. Иногда может требоваться комбинация размещений. В этом случае, для каждого объекта контейнера, используемого в GUI, может быть установлено различное размещение. Следующий пример демонстрирует то же самое.

Пример 10:
import java.awt.*;
class MultipleLayouts extends Frame {

Panel mainPanel = new Panel();
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel ();
Panel p4 = new Panel ();
Panel p5 = new Panel();
Button btnl = new Button( Button 1 );
Button btn2 = new Button( Button 2 );
Button btn3 = new Button( Button 3 );
Button btn4 = new Button( Button 4 );
Button btn5 = new Button( Button 5 );
Button btn6 = new Button( Button 6 );
public MultipleLayouts(String title) {
super(title);
setLayout(new FlowLayout(FlowLayout.CENTER));
add(mainPanel);

p1.setLayout(new BorderLayout() ) ;
p1.add(btnl, BorderLayout.EAST);
p1.add(btn2, BorderLayout.WEST);
p2.setLayout(new GridLayout(2, 2) ) ;

p2.add(btn3);
p2.add(btn4);
p2.add(btn5);
p2.add(btn6);

mainPanel.add(pi);
mainPanel.add(p2);
         }

public static void main(String args[]) {
MultipleLayouts ml = new MultipleLayouts( Multiple Layouts! );
ml.setSize(300,300) ;
ml.show();
         }
}

Рисунок 6.14 показывает вывод примера 10.

Рисунок 6.14: Вывод примера 10

назад к оглавлению вперед

Rus. Open Source company, г. Саратов
ул. Орджоникидзе, 156, офис 203
тел: 8 (8452) 57-84-41
e-mail: info@rus_opensource.com

Главная | Обзоры | О разном
Карта сайта

Учебная литература:

Введение в Linux
Основы JAVA
Архивы

© 2013 opensourcerules.net