6.4 Размещение контейнеров
В предыдущих разделах, мы применяли менеджеры компоновки при использовании компонентов для GUI. В следующих разделах мы обсудим подробно различных менеджеров компоновки, доступных в Java.
6.4.1 Менеджер компоновки
Экранные компоненты на пользовательском интерфейсе могут быть размещены различными способами. Например, они могут быть горизонтально размещены последовательным способом или размещены в манере подобно сетке. Каждая из этих схем могла упоминаться как 'размещение' компонентов. Чтобы управлять этими размещениями, мы должны иметь менеджеров размещения или стандартные схемы, которые установят дизайн для размещения. Всякий раз, когда экран должен быть изменен, или любой элемент на экране должен быть повторно оттянут, менеджер компоновки упорядочит элементы. Различные языки имеют свои собственные различные способы в достижении этой цели. Например, в RAD (Среда быстрой разработки приложений) для создания и установки элементов GUI мы имеем подход "drag and drop".
Процедура для упорядочивания размещения должна быть следующая -
1) Создайте элементы GUI
2) Установите их индивидуально или установите желательную схему размещения
Мы теперь знаем, что Java - язык программирования, который реализуется на различных платформах. Каждая из этих платформ имеет свой собственный способ показать экранные компоненты. Должен быть способ определять элементы GUI, независимо от используемой платформы так, что изменение размеров окна не создает пустоты на экране. AWT обеспечивает группу классов, известных как менеджеры размещения или размещения, которые обрабатывают управление размещения. Всеми размещениями осуществляет интерфейс LayoutManager. Менеджер размещения автоматически устанавливает компоненты в пределах контейнера.
Рассмотрим различные размещения, доступные в Java:
■ Flow Layout (Размещение Потока)
■ Border Layout (Размещение Границы)
■ Card Layout (Размещение Карты) Grid Layout (Размещение Сетки)
■ GridBag Layout
Каждый различный менеджер компоновки имеет своё собственное специфическое использование. Один менеджер размещения, который может удовлетворить некоторый интерфейс пользователя, не может быть применим для другого интерфейса пользователя. Если наши потребности являются определенными, тогда конкретный менеджер размещения может удовлетворит наши потребности. Например, в программе Java, если бы наши требования должны были отобразить несколько компонентов того же самого размера в строках и столбцах, мы бы использовали соответственно GridLayout. Точно так же, если бы мы должны были отобразить компонент в максимальном возможном месте, мы должны были бы выбрать между BorderLayout и GridBagLayout, так как они будут единственными двумя, применимыми для такого требования.
Когда сначала создан компонент, то используется его заданный по умолчанию менеджер размещения. Например, заданное по умолчанию размещение апплета -
'FlowLayout'. Все компоненты помещены в контейнер и размещены согласно связанному менеджеру размещения. Новый менеджер размещения может быть установлен, используя метод, названный
'setLayout () '.
Каждый раз, контейнер должен изменить его появление или всякий раз, когда добавляется новый компонент, с менеджером компоновки согласуется. Если размер компонента изменен даже косвенно, изменяется и его шрифт, и компонент должен автоматически изменить размеры и сразу перерисоваться. Если это не случается, мы должны вызвать метод компонента
revalidate().
Рассмотрим детали каждого размещения.
6.4.2 Менеджер компоновки потока
'FlowLayout' - заданный по умолчанию менеджер компоновки для апплета и панелей. Компоненты размещены последовательно от верхнего левого угла к правому углу основания. Когда есть множество компонентов, они - размещаются слева направо. Некоторые из конструкторов для
FlowLayout следующие:
FlowLayout mylayout = new FlowLayout(); // constructor
// constructor with alignment specified
FlowLayout exLayout = new FlowLayout(FlowLayout.RIGHT);
setLayout(exlayout); // setting the layout to FlowLayout
Контролировать выравнивание можно слева, справа и по центру. Для контроля выравнивания справа, используется следующий синтаксис:
setLayout(new FlowLayout(FlowLayout.RIGHT));
Если есть большее количество компонентов, экран будет выглядеть дезорганизованным или грязным. В таких случаях, лучше выбрать любое другое размещение, которое может соответственно упорядочить компоненты.