Ссылку на компонент, помещенный в определенную область, можно получить методом getLayoutComponent, в котором указывает область.
В конструкторе менеджера можно указать горизонтальные и вертикальные промежутки между областями, задаваемые в пикселах.
Если в контейнер помещается менее пяти компонентов, то некоторые области не используются и не занимают места в контейнере.
Если не занята область CENTER, тогда компоненты прижимаются к границам контейнера.
Так как менеджер компоновки BorderLayout размещает не больше пяти компонентов, можно использовать в качестве компонентов панели, в которые дополнительно размещать компоненты.
GridLayout
Менеджер компоновки GridLayout размещает компоненты в таблицу с заданным в конструкторе числом строк и столбцов.
Все компоненты получают одинаковый размер.
В конструкторе также можно задать промежутки между компонентами в пикселах по горизонтали и вертикали.
Конструктор по умолчанию менеджера задает таблицу размером 0 на 0 без промежутков между компонентами. Компоненты будут располагаться в одной строке.
Компоненты размещаются менеджером GridLayout слева направо по строкам созданной таблицы в том порядке, в котором они заданы в методах add контейнера.
Нулевое количество строк или столбцов означает, что менеджер сам создаст нужное их число.
CardLayout
Менеджер компоновки CardLayout показывает в контейнере стек компонентов, отображая только один, первый компонент.
Остальные компоненты лежат под первым в определенном порядке.
Их расположение определяется порядком добавления в контейнер с помощью метода add.
Следующий компонент можно показать методом next менеджера, предыдущий – методом previous, последний – методом last, первый – методом first.
Аргумент этих методов – ссылка на контейнер, в который помещены компоненты.
В конструкторе менеджера можно указать горизонтальные и вертикальные отступы от границ контейнера.
Менеджер CardLayout позволяет организовать и произвольный доступ к компонентам.
Метод add тогда имеет в качестве аргумента имя компонента.
Нужный компонент с именем можно показать методом show, в котором указывается имя нужного компонента и контейнер.
Тут нужно учесть, что для фрейма мы добавляем компоненты не в сам фрейм, а в панель содержимого contentPane.
GridBagLayout
Менеджер компоновки GridBagLayout позволяет размещать компоненты наиболее гибко, задавая размеры и положение каждого компонента.
В классе GridBagLayout есть только один конструктор, конструктор по умолчанию, без аргументов.
Менеджер GridBagLayout, в отличие от других менеджеров компоновки, не содержит правил размещения. Он играет только организующую роль.
Все правила размещения компонентов задаются в объекте другого класса, GridBagConstraints, который указывается в методе add добавления компонента в контейнер.
Менеджер размещает компоненты в таблице с неопределенным заранее числом строк и столбцов.
Один компонент может занимать несколько ячеек этой таблицы, заполнять ячейку целиком, располагаться в ее центре, углу или прижиматься к краю ячейки.
Класс GridBagConstraints содержит одиннадцать полей, определяющих размеры компонентов, их положение в контейнере и взаимное положение, и несколько констант – значений полей.
Как правило, объект класса GridBagConstraints создается конструктором по умолчанию, затем значения нужных полей определяются простым присваиванием новых значений.
Здесь поле gridx указывает номер строки, поле gridy указывает номер столбца, поле gridwidth указывает количество занимаемых ячеек в строке, поле ipady указывает сколько добавляется к минимальной высоте компонента, поле fill используется, когда область отображения компонента больше, чем размер компонента.
GroupLayout
Менеджер компоновки GroupLayout работает с горизонтальной и вертикальной компоновкой отдельно.
Это означает, что каждый компонент должен быть определен дважды в горизонтальной и вертикальной компоновке.
Если вы забудете это сделать, GroupLayout выбросит исключение.
Менеджер GroupLayout использует два типа размещения компонентов: последовательное и параллельное расположение.
При последовательном размещении компоненты просто размещаются один за другим по одной оси.
Позиция каждого компонента определяется относительно предыдущего компонента.
Второй способ размещает компоненты параллельно – поверх друг друга в одном и том же месте.
Компоненты могут быть выровнены по базовой линии, по верху или низу по вертикали.
По горизонтали они могут быть выровнены влево, вправо или по центру, если компоненты не имеют одинакового размера.
Обычно компоненты, размещенные параллельно по одной оси, размещаются последовательно по другой оси, так что они не перекрываются.
Таким образом эти размещения могут быть вложенными, создавая иерархию.
Расстояние между компонентами или отступы можно рассматривать как невидимую составляющую определенного размера.
Отступы произвольного размера могут быть добавлены к группам компонентов, как отдельные компоненты, с помощью методов для групп GroupLayout.ParallelGroup и GroupLayout.SequentialGroup.