Книга о языке Java

ГЛАВА 11
Размещение компонентов

В предыдущей главе мы размешали компоненты "вручную", задавая их размеры и положение в контейнере абсолютными координатами в координатной системе контейнера. Для этого мы применяли метод setBounds().

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

Чтобы учесть изменение размеров окна, надо задать размеры и положение компонента относительно размеров контейнера, например, так:

int w = getSizef).width; // Получаем ширину

int h = getSizeO.height; //и высоту контейнера

Button Ь = new Button("OK"); // Создаем кнопку

b.setBounds(9*w/20, 4*h/5, w/10, h/10);

и при всяком изменении размеров окна задавать расположение компонента заново.

Чтобы избавить программиста от этой кропотливой работы, в библиотеку AWT внесены два интерфейса: LayoutManager и порожденный от него интерфейс LayoutManager2, а также пять реализаций этих интерфейсов: классы BorlerLayout, CardLayout, FlowLayout, GridLayout И GridBagLayout. Эти классы названы менеджерами размещения (layout manager) компонентов.

Каждый программист может создать свои менеджеры размещения, реализовав интерфейсы LayoutManager или LayoutManager2.

Посмотрим, как размещают компоненты эти классы.

Далее