Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
82
Добавлен:
24.02.2016
Размер:
257.54 Кб
Скачать

Выбор менеджера размещения

Рассмотрим краткие формулировки основных рекомендаций по применению каждого из рассмотренных менеджеров.

Что необходимо?

Что использовать?

Быстро разместить все компоненты, не обращая внимания на совершенство композиции

FlowLayout

Быстро и по возможности красиво расположить все компоненты

BorderLayout

Разместить компоненты, имеющие одинаковый размер

GridLayout

Разместить компоненты, некоторые из которых имеют одинаковый размер

Рекомендуется использовать GridLayout в отдельной панели, собрав в нее компоненты, имеющие одинаковый размер, а все остальные компоненты вынести за пределы этой панели

Выводить компоненты на экран по мере необходимости

CardLayout

отображать некоторые компоненты постоянно, а некоторые - по мере необходимости

Рекомендуется использовать CardLayout в панели, предназначенной для вывода компонентов по мере необходимости, а постоянно отображаемые компоненты вынести за пределы этой панели.

Иметь как можно больше контроля над расположением компонентов, а также обеспечить разумную реакцию на изменение размеров контейнера

GridBagLayout

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

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

setLayout(new BorderLayout());

Если в контейнере имеется несколько вложенных компонент-контейнеров, то при задании менеджеров размещения для них нужно указать, в каком контейнере он будет действовать, например:

inputPanel.setLayout(new BorderLayout());

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

leftPanel.add("North",radioField);

При использовании менеджера GridBagLayout параметры передаются в объекте специального класса GridBagConstraints, с помощью которого можно установить для каждого компонента значения определенных параметров расположения.

Как правило, компоненты добавляются один за другим в пределах одного горизонтального ряда, пока в этом ряду остается свободное место; следующий добавляемый компонент начинает следующий ряд. Этому правилу в каком-то смысле подчиняется даже BorderLayout - когда добавляется несколько компонентов с одним и тем же параметром расположения (например, "North"), они размещаются в своей части контейнера по тому же закону.