ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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) – получение и установка количества столбцов.
Класс 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) – получение и установка промежутка по горизонтали между компонентами.
Компоновка 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).
Менеджер компоновки 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)
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)