Класс SpringLayout

Все реализованные интерфейсы:
LayoutManager, LayoutManager2
public class SpringLayout
extends Object
implements LayoutManager2

A SpringLayout компонует дочерние элементы своего связанного контейнера в соответствии с набором ограничений. Смотрите Как использовать SpringLayout в Java Tutorial для примеров использования SpringLayout.

Каждое ограничение, представленное объектом Spring, контролирует вертикальное или горизонтальное расстояние между двумя границами компонента. Границы могут принадлежать любому дочернему элементу контейнера или самому контейнеру. Например, допустимую ширину компонента можно выразить с помощью ограничения, контролирующего расстояние между западной (левой) и восточной (правой) границами компонента. Допустимые координаты y компонента можно выразить, ограничив расстояние между северной (верхней) границей компонента и северной границей его контейнера.

Каждый дочерний элемент контейнера, управляемого SpringLayout, а также сам контейнер, имеет ровно один набор ограничений, связанный с ним. Эти ограничения представлены объектом SpringLayout.Constraints. По умолчанию, SpringLayout создаёт ограничения, которые заставляют связанный компонент иметь минимальные, предпочтительные и максимальные размеры, возвращаемые методами компонента Component.getMinimumSize(), Component.getPreferredSize() и Component.getMaximumSize(). Позиции x и y изначально не ограничены, поэтому до тех пор, пока вы их не ограничите, компонент будет расположен в координатах 0,0 относительно Insets родительского Container.

Вы можете изменить ограничения компонента несколькими способами. Вы можете использовать один из методов putConstraint для создания пружины, связывающей границы двух компонентов в одном контейнере. Или вы можете получить соответствующий объект SpringLayout.Constraints с помощью getConstraints и затем изменить одну или несколько его пружин. Или вы можете получить пружину для определённой грани компонента с помощью getConstraint и изменить её. Вы также можете связать собственный объект SpringLayout.Constraints с компонентом, указав объект ограничений при добавлении компонента в его контейнер (с помощью Container.add(Component, Object)).

Объект Spring, представляющий каждое ограничение, имеет минимальное, предпочтительное, максимальное и текущее значение. Текущее значение пружины находится где-то между минимальным и максимальным значениями, в соответствии со формулой, приведённой в описании метода Spring.sum(javax.swing.Spring, javax.swing.Spring). Когда минимальное, предпочтительное и максимальное значения одинаковы, текущее значение всегда равно им; эта жёсткая пружина называется стойкой. Стойки можно создавать с помощью фабричного метода Spring.constant(int). Класс Spring также предоставляет фабричные методы для создания других типов пружин, включая пружины, зависящие от других пружин.

В SpringLayout, положение каждой границы зависит от положения только одной другой границы. Если ограничение добавляется позже для создания новой связи для границы, предыдущая связь отбрасывается, и граница остаётся связанной с одной единственной границей. Пружины должны прикрепляться только между границами контейнера и его непосредственных дочерних элементов; поведение SpringLayout при представлении ограничений, связывающих границы компонентов из разных контейнеров (внутренних или внешних), не определено.

SpringLayout против других менеджеров компоновки

Note: Unlike many layout managers, SpringLayout doesn't automatically set the location of the components it manages. If you hand-code a GUI that uses SpringLayout, remember to initialize component locations by constraining the west/east and north/south locations.  Depending on the constraints you use, you may also need to set the size of the container explicitly.

Несмотря на простоту SpringLayout, она может эмулировать поведение большинства других менеджеров компоновки. Для некоторых функций, таких как разбиение строк, предоставляемое FlowLayout, потребуется создание специального подкласса класса Spring.

SpringLayout также предоставляет способ решения многих сложных проблем компоновки, которые не могут быть решены с помощью вложенных комбинаций Box. Тем не менее, SpringLayout правильно соблюдает контракт LayoutManager2 и поэтому может быть вложен с другими менеджерами компоновки - метод, который может быть предпочтительнее создания ограничений, подразумеваемых другими менеджерами компоновки.

Асимптотическая сложность операции компоновки SpringLayout линейна по количеству ограничений (и/или компонентов).

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с 1.4, поддержка долгосрочного хранения всех JavaBeans™ была добавлена в пакет java.beans. Пожалуйста, обратитесь к XMLEncoder.

С:
1.4
См. также:
Spring, SpringLayout.Constraints

Вложенные классы

Модификатор и тип Класс Описание
static class  SpringLayout.Constraints

Объект Constraints содержит ограничения, которые определяют способ изменения размера и положения компонента в контейнере, управляемом SpringLayout.

Поля

Модификатор и тип Поле Описание
static String BASELINE

Указывает базовую линию компонента.

static String EAST

Указывает правую границу прямоугольника границ компонента.

static String HEIGHT

Указывает высоту прямоугольника границ компонента.

static String HORIZONTAL_CENTER

Указывает горизонтальный центр прямоугольника границ компонента.

static String NORTH

Указывает верхнюю границу прямоугольника границ компонента.

static String SOUTH

Указывает нижнюю границу прямоугольника границ компонента.

static String VERTICAL_CENTER

Указывает вертикальный центр прямоугольника границ компонента.

static String WEST

Указывает левую границу прямоугольника границ компонента.

static String WIDTH

Указывает ширину прямоугольника границ компонента.

Краткое описание конструкторов

Конструктор Описание
SpringLayout()

Конструктор нового SpringLayout.

Краткое описание методов

Модификатор и тип Метод Описание
void addLayoutComponent​(Component component, Object constraints)

Если constraints является экземпляром SpringLayout.Constraints, связывает ограничения с указанным компонентом.

void addLayoutComponent​(String name, Component c)

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

Spring getConstraint​(String edgeName, Component c)

Возвращает пружину, управляющую расстоянием между указанной границей компонента и верхней или левой границей его родителя.

SpringLayout.Constraints getConstraints​(Component c)

Возвращает ограничения для указанного компонента.

float getLayoutAlignmentX​(Container p)

Возвращает 0.5f (по центру).

float getLayoutAlignmentY​(Container p)

Возвращает 0.5f (по центру).

void putConstraint​(String e1, Component c1, int pad, String e2, Component c2)

Связывает границу e1 компонента c1 с границей e2 компонента c2, с фиксированным расстоянием между границами.

void putConstraint​(String e1, Component c1, Spring s, String e2, Component c2)

Связывает границу e1 компонента c1 с границей e2 компонента c2.

void removeLayoutComponent​(Component c)

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

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.awt.LayoutManager

layoutContainer, minimumLayoutSize, preferredLayoutSize

Методы, объявленные в интерфейсе java.awt.LayoutManager2

invalidateLayout, maximumLayoutSize

Поля

СВЕРХУ

public static final String NORTH

Определяет верхнюю границу области компоновки компонента.

См. также:
Значения постоянных полей

СНИЗУ

public static final String SOUTH

Определяет нижнюю границу области компоновки компонента.

См. также:
Значения постоянных полей

ВОСТОК

public static final String EAST

Определяет правую границу области компоновки компонента.

См. также:
Значения постоянных полей

ЗАПАД

public static final String WEST

Определяет левую границу области компоновки компонента.

См. также:
Значения постоянных полей

ГОРИЗОНТАЛЬНЫЙ_ЦЕНТР

public static final String HORIZONTAL_CENTER

Определяет горизонтальный центр области компоновки компонента.

С:
1.6
См. также:
Значения постоянных полей

ВЕРТИКАЛЬНЫЙ_ЦЕНТР

public static final String VERTICAL_CENTER

Определяет вертикальный центр области компоновки компонента.

С:
1.6
См. также:
Значения постоянных полей

ЛИНИЯ_БАЗОВАЯ

public static final String BASELINE

Определяет базовую линию компонента.

С:
1.6
См. также:
Значения постоянных полей

ШИРИНА

public static final String WIDTH

Определяет ширину области компоновки компонента.

С:
1.6
См. также:
Значения постоянных полей

ВЫСОТА

public static final String HEIGHT

Определяет высоту области компоновки компонента.

С:
1.6
См. также:
Значения постоянных полей

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

SpringLayout

public SpringLayout()

Создаёт новый SpringLayout.

Методы

addLayoutComponent

public void addLayoutComponent(String name,
                               Component c)

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

Определено в:
addLayoutComponent в интерфейсе LayoutManager
Параметры:
name - строка, которая будет связана с компонентом
c - компонент, который будет добавлен

removeLayoutComponent

public void removeLayoutComponent(Component c)

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

Определено в:
removeLayoutComponent в интерфейсе LayoutManager
Параметры:
c - компонент, удаляемый из контейнера

addLayoutComponent

public void addLayoutComponent(Component component,
                               Object constraints)

Если constraints является экземпляром SpringLayout.Constraints, связывает ограничения с указанным компонентом.

Определено в:
addLayoutComponent в интерфейсе LayoutManager2
Параметры:
component - добавляемый компонент
constraints - ограничения компонента
См. также:
SpringLayout.Constraints

getLayoutAlignmentX

public float getLayoutAlignmentX(Container p)

Возвращает 0,5f (по центру).

Определено в:
getLayoutAlignmentX в интерфейсе LayoutManager2
Параметры:
p - целевой контейнер
Возвращает:
предпочтение выравнивания по оси x

getLayoutAlignmentY

public float getLayoutAlignmentY(Container p)

Возвращает 0,5f (по центру).

Определено в:
getLayoutAlignmentY в интерфейсе LayoutManager2
Параметры:
p - целевой контейнер
Возвращает:
предпочтение выравнивания по оси y

putConstraint

public void putConstraint(String e1,
                          Component c1,
                          int pad,
                          String e2,
                          Component c2)

Связывает край e1 компонента c1 с краем e2 компонента c2, с фиксированным расстоянием между краями. Это ограничение вызовет назначение

value(e1, c1) = value(e2, c2) + pad
во всех последующих операциях компоновки.

Параметры:
e1 - край зависимого
c1 - компонент зависимого
pad - фиксированное расстояние между зависимым и якорем
e2 - край якоря
c2 - компонент якоря
См. также:
putConstraint(String, Component, Spring, String, Component)

putConstraint

public void putConstraint(String e1,
                          Component c1,
                          Spring s,
                          String e2,
                          Component c2)

Связывает край e1 компонента c1 с краем e2 компонента c2. По мере изменения значения края (e2, c2) край (e1, c1) будет вычисляться, суммируя (весенним) (e2, c2) и s. Каждый край должен иметь одно из следующих значений: SpringLayout.NORTH, SpringLayout.SOUTH, SpringLayout.EAST, SpringLayout.WEST, SpringLayout.VERTICAL_CENTER, SpringLayout.HORIZONTAL_CENTER или SpringLayout.BASELINE.

Параметры:
e1 - край зависимого
c1 - компонент зависимого
s - пружина, связывающая зависимый и якорь
e2 - край якоря
c2 - компонент якоря
См. также:
putConstraint(String, Component, int, String, Component), NORTH, SOUTH, EAST, WEST, VERTICAL_CENTER, HORIZONTAL_CENTER, BASELINE

getConstraints

public SpringLayout.Constraints getConstraints(Component c)

Возвращает ограничения для указанного компонента. Обратите внимание, что в отличие от метода GridBagLayout getConstraints, этот метод не клонирует ограничения. Если с этим компонентом не было связаны ограничения, этот метод возвращает объект ограничений по умолчанию, расположенный в 0,0 относительно отступов родителя и с шириной/высотой, ограниченной минимальными, максимальными и предпочтительными размерами компонента. Характеристики размера не замораживаются в момент вызова этого метода; вместо этого этот метод возвращает объект ограничений, характеристики которого отслеживают характеристики компонента по мере их изменения.

Параметры:
c - компонент, ограничения которого будут возвращены
Возвращает:
ограничения для указанного компонента

getConstraint

public Spring getConstraint(String edgeName,
                            Component c)

Возвращает пружину, управляющую расстоянием между указанным краем компонента и верхним или левым краем его родителя. Вместо того чтобы возвращать текущую привязку к краю, этот метод возвращает прокси, который отслеживает характеристики края, даже если край впоследствии перепривязан. Прокси предназначены для использования в средах сборки, где полезно позволить пользователю определять ограничения компоновки в любом порядке. Однако прокси предоставляют средства для создания циклических зависимостей между ограничениями компоновки. Такие циклы обнаруживаются внутренне SpringLayout, чтобы операция компоновки всегда завершалась.

Параметры:
edgeName - должен быть одним из SpringLayout.NORTH, SpringLayout.SOUTH, SpringLayout.EAST, SpringLayout.WEST, SpringLayout.VERTICAL_CENTER, SpringLayout.HORIZONTAL_CENTER или SpringLayout.BASELINE
c - компонент, пружина края которого требуется
Возвращает:
прокси для пружины, управляющей расстоянием между указанным краем и верхним или левым краем его родителя
См. также:
NORTH, SOUTH, EAST, WEST, VERTICAL_CENTER, HORIZONTAL_CENTER, BASELINE

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/SpringLayout.html

Spec-Zone .ru
спецификации, руководства, описания, API