ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.11.2023

Просмотров: 161

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
GridLayout, содержащий две строки, он создаст три столбца. Если создается GridLayout с заданным числом строк, следует в качестве числа столбцов указать значение 0. Если же надо задать число столбцов, то вместо числа строк следует задать значение 0 (если оба значения ненулевые, будет использоваться только количество строк, а число столбцов будет вычислено, исходя из количества строк и числа компонентов в контейнере). Так предложение

GridLayout myGridLayout = new GridLayout(0, 4, 8, 10);

создает объект GridLayout с четырьмя столбцами, про­межутком между столбцами 8 пикселей, а между строками — 10 пикселей. Задание нулевых значений и для rows и для cols приводит к возбуждению исключения IllegalArgumentException.

Можно также создать объект GridLayout с помощью конструктора

public GridLayout(int rows, int cols)

(в этом случае промежутков между столбцами и между строками не будет).

Конструктор

public GridLayout()

задает объект с одной строкой и одной колонкой.

Менеджер GridLayout старается установить размер каждого компонента к максимальной предпочитаемой ширине и максимальной предпочитаемой высоте (все компоненты GridLayout будут одного и того же размера). Поэтому предпочитаемая ширина pw и высота ph для GridLayout рассчитывается по следующей формуле:

pw = (maxPrefWidth * cols) + (hgap * (cols+1))

ph = (maxPrefHeight * rows) + (vgap * (rows+1))

Класс GridLayout, помимо методов интерфейса LayoutManager, обеспечивает также следующие методы:

public int getAlignment() и public void setAlignment(int align) – получение и установка выравнивания;

public int getVgap() и public void setVgap(int vgap) – получение и установка промежутка по вертикали между компонентами;


public int getHgap() и public void setHgap(int hgap) – получение и установка промежутка по горизонтали между компонентами;

public int getRows() и public void setRows(int rows) – получение и установка количества строк;

public int getColumns() и public void setColumns(int rows) – получение и установка количества столбцов.

3.2.4. Менеджер BorderLayout


Класс BorderLayout разделяет контейнер на пять областей, условно назы­ваемых "North" (север), "South" (юг), "East" (восток), "West" (запад) и "Center" (центр).

Этот менеджер используется по умолчанию в объектах класса Frame и его подклассах.

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

Менеджер BorderLayout требует ограничителя при добавлении компонент. Ограничитель может быть одной из следующих переменных класса BorderLayout с модификаторами public static final int: NORTH, SOUTH, EAST, WEST или CENTER.

Эти ограничители определяются с помощью следующего метода класса Container:

public void add(Component component, Object constraint),

например:

add(new Button("Север"), BorderLayout.NORTH);

Объект BorderLayout создается с помощью одного из конструкторов:

public BorderLayout()

public BorderLayout(int hgap, int vgap)



где параметры vgap и hgap задают промежутки по вертикали и го­ризонтали (в случае конструктора без параметров между компонентами нет промежутков).

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

Менеджер действует по следующему алгоритму:

области BorderLayout.NORTH и BorderLayout.SOUTH являются полезными, если необходимо связать высоту компонента с его предпочитаемой высотой;

области BorderLayout.EAST и BorderLayout.WEST являются полезными, если необходимо связать ширину компонента с его предпочитаемой шириной;

как только указанные выше компоненты становятся связанными, область BorderLayout.CENTER становится расширяющейся частью.

Предпочитаемая ширина pw компоновки BorderLayout зависит от самой широкой из строк, а предпочитаемая высота ph зависит от размеров компонент NORTH и SOUTH, а также самого высокого из компонент средней строки:

pw = max(north.pw, south.pw,

(west.pw + center.pw + east.pw + hgaps))

ph = vgaps + north.ph + south.ph +

max(west.ph, center.ph, east.ph)

Класс BorderLayout, помимо методов интерфейсов LayoutManager и LayoutManager2, обеспечивает также следующие методы:

public int getVgap() и public void setVgap(int vgap) – получение и установка промежутка по вертикали между компонентами;

public int getHgap() и public void setHgap(int hgap) – получение и установка промежутка по горизонтали между компонентами.

3.2.5. Менеджер компоновки BoxLayout


Компоновка BoxLayout в целом подобна стандартной компоновке библиотеки AWT FlowLayout
, за исключением того, что при работе с новой компоновкой можно определить используемую ось (с помощью статических переменных класса BoxLayout: Х_AXIS или Y_AXIS). В отличие от компоновки GridLayout, здесь каждый компонент может занимать ячейку различного размера. Для использования компоновки BoxLayout с ориентацией по оси Y достаточно поместить в программу следующий оператор:

setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

Если в программе желательно применить компоновку типа BoxLayout, в качестве контейнера вместо класса JPanel следует использовать класс Box (для этого класса компоновка BoxLayout используется по умолча­нию). Кроме того, класс Box предоставляет несколько дополнительных методов, обеспечивающих полный контроль над размещением компонентов в окне.

Так, в число размещаемых на панели компонентов можно включить невидимые компоненты-заполнители трех видов.

Первый вид заполнителя – невидимая разделительная область (rigid area), имеющая фиксированные размеры. Она создается с помощью метода

public static Component createRigidArea(Dimension d)

и вставляется между компонентами, создавая промежуток фиксированного размера между ними.

Заполнитель второго вида – невидимая «распорка» (strut) имеет только один фиксированный размер. У горизонтальной распорки, создаваемой статиче­ским методом

public static Component createHorizontalStrut(int width)

фиксирована только ширина. При горизонтальном расположении компонентов распорку можно использовать для создания промежутков между компонентами, а при вертикальном расположении — для задания ширины всей панели.

У вертикальной распорки, создаваемой статическим методом

public static Component createVerticalStrut(int height)

фиксирована высота. Она используется аналогично горизонтальной распорке.

Третий вид заполнителя – невидимая «надувная подушка» (glue), «раздуваясь», заполняет все выделенное ей пространство, раздвигая осталь­ные компоненты и прижимая их к краям панели, если они имеют фиксиро­ванный максимальный размер. Этот заполнитель создается одним из стати­ческих методов:


public static Component createGlue() – «подушка» раздувается во все стороны;

public static Component createHorizontalGlue() – «подушка» раздается в ширину;

public static Component createVerticalGlue() – «подушка» раздается в высоту.

Кроме этих трех компонентов-разделителей можно использовать невидимый компонент с фиксированным минимальным, максимальным и предпочти­тельным размерами. Он является объектом класса Filler, вложенного в класс Box, и создается конструктором

Box.Filler(Dimension min, Dimension pref, Dimension max).

Преимущество этого объекта в том, что он может поменять размеры с помощью метода

void changeShape(Dimension min, Dimension pref,

Dimension max).

3.2.6. Менеджер компоновки SpringLayout


Менеджер компоновки SpringLayout использует для определения положения и размеров компонента использует координаты x, у и размерами width, height, задаваемыми объектами абстрактного класса Spring.

Каждый объект этого класса содержит четыре величины: минимальный, максимальный и предпочтительный размеры, а также текущий размер. Эти размеры могут использоваться как размеры промежутков между компонентами. Объект класса Spring задается а методом

public static Spring constant(int min, int pref, int max),

с заданным минимальным, предпочитаемым и максимальным значениями, а метод

public static Spring constant(int size)

возвращает объект класса Spring с совпадающими между собой размерами, равными size.

Текущий размер value, устанавливается методом

public abstract void setValue(int value).

Минимальный, максимальный, предпочитаемый и текущий размер можно получить с помощью методов

public abstract int getMinimumValue(),

public abstract int getMaximumValue(),

public abstract int getPreferredValue(),

public abstract int getValue().

При использовании менеджером SpringLayout нескольких объектов класса для учета их взаимодействия в классе Spring определены несколько методов.

Так, метод

public static Spring max(Spring s1, Spring s2)