Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SPO 25-34.docx
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
524.83 Кб
Скачать

Менеджеры компоновки

Хотя все компоненты окна можно позиционировать вручную (с помощью метода setBounds()) такой способ позиционирования имеет множество недостатков и как правило не применяется. Во-первых, очень утомительно рассчитывать координаты позиционирования для каждого компонента, во-вторых, при изменении размеров окна с помощью мыши все компоненты останутся на своих местах, «привязанные» к левому верхнему углу окна, в-третьих, внешний вид окна и размещенных в нем элементов будет в значительной степени зависеть от графической подсистемы конкретного компьютера (например, от разрешения экрана), что не соответствует концепции кроссплатформности. Поэтому были разработаны специальные программные средства для автоматического управления размещением компонентов внутри контейнера. Средства автоматического размещения компонентов организованы в библиотеке AWT с помощью интерфейса (LayoutManager) и пяти классов, реализующих этот интерфейс (BorderLayout, CardLayout, FlowLayout, GridLayout, GridBagLayout). Эти классы получили название менеджеров размещения или менеджеров компоновки. Каждый компонент класса Container или одного из его подклассов (например, любое окно) имеет связанный с ним менеджер компоновки, т.е. экземпляр некоторого класса, реализующего интерфейс LayoutManager.

Менеджер компоновки устанавливается методом

void setLayout(LayoutManager obj)

здесь obj - ссылка на необходимый менеджер компоновки. Если необходимо отключить менеджер компоновки и позиционировать компоненты в окне вручную, необходимо передать в качестве параметра obj значение null. Менеджер компоновки применяется каждый раз, когда к контейнеру добавляется новый компонент, или контейнер изменяется в размерах.

Рассмотрим встроенные менеджеры компоновки.

Менеджер FlowLayout

FlowLayout – это менеджер поточной компоновки. Он размещает компоненты в окне начиная от левого верхнего угла слева направо и сверху вниз. Между компонентами по вертикали и горизонтали оставляется небольшое пространство. Кроме того, в каждом ряду можно управлять выравниванием компонентов.

Конструкторы FlowLayout:

FlowLayout (int align, int h, int v)

Данный конструктор задает размещение потоковое размещение элементов, где между компонентами по вертикали оставляется промежуток v пикселов, а по горизонтали – h пикселов. Выравнивание компонентов в рядах определяет параметр align. Он должен принимать одно из следующих значений:

FlowLayour.LEFT

FlowLayout.RIGHT

FlowLayout.CENTER

Менеджер FlowLayout является менеджером размещения установленным по умолчанию для класса Panel (т.е. если методом setLayout() не был установлен другой менеджер размещения, то компоненты будут размещаться поточным способом).

Пример 9.4:

Frame f = new Frame(“FlowTest”);

f.setLayout (new FlowLayout(FlowLayout.LEFT, 10,10));

Менеджер BorderLayout

Класс BorderLayout реализует граничный стиль компоновки. При этом контейнер делится на 5 неравных областей, заполняя каждую область одним компонентом как показано на рис. 9.3. Области получили географические названия NORTH, SOUTH, EAST, WEST, CENTER. Добавлять компоненты в этом случае можно с помощью специальной формы метода add():

void add (Component comp, Object region)

где параметр region должен принимать одно из следующих значений:

BorderLayout.NORTH

BorderLayout.SOUTH

BorderLayout.EAST

BorderLayout.WEST

BorderLayout.CENTER

North

West

Center

East

South

Рис.9.3

Можно также пользоваться обычным методом add(), в этом случае компонент будет помещен в область CENTER.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]