Класс SpringLayout
- Все реализуемые интерфейсы:
LayoutManager, LayoutManager2
public class SpringLayout extends Object implements LayoutManager2
SpringLayout размещает дочерние компоненты связанного с ним контейнера в соответствии с набором ограничений. Примеры использования SpringLayout см. в разделе Как использовать SpringLayout в учебнике по Java. Каждое ограничение, представленное объектом Spring, задаёт вертикальное или горизонтальное расстояние между двумя краями компонентов. Эти края могут принадлежать любому дочернему компоненту контейнера или самому контейнеру. Например, допустимую ширину компонента можно выразить с помощью ограничения, задающего расстояние между западным (левым) и восточным (правым) краями компонента. Допустимые координаты y компонента можно задать, ограничив расстояние между северным (верхним) краем компонента и северным краем его контейнера.
У каждого дочернего компонента контейнера, управляемого SpringLayout, а также у самого контейнера есть ровно один набор связанных с ним ограничений. Эти ограничения представлены объектом SpringLayout.Constraints. По умолчанию SpringLayout создаёт ограничения, при которых связанные с ними компоненты имеют минимальный, предпочтительный и максимальный размеры, возвращаемые методами Component.getMinimumSize(), Component.getPreferredSize() и Component.getMaximumSize() компонента. Положения x и y изначально не ограничены, поэтому до тех пор, пока для них не заданы ограничения, Component будет располагаться в точке 0,0 относительно Insets родительского Container.
Изменить ограничения компонента можно несколькими способами. Можно воспользоваться одним из методов putConstraint, чтобы установить пружину, связывающую края двух компонентов в одном контейнере. Можно получить соответствующий объект SpringLayout.Constraints с помощью getConstraints, а затем изменить одну или несколько его пружин. Или можно получить пружину для определённого края компонента с помощью getConstraint и изменить её. Кроме того, можно связать собственный объект SpringLayout.Constraints с компонентом, указав объект ограничений при добавлении компонента в контейнер (с помощью Container.add(Component, Object)).
Объект Spring, представляющий каждое ограничение, имеет минимальное, предпочтительное, максимальное и текущее значения. Текущее значение пружины находится между минимальным и максимальным значениями согласно формуле, приведённой в описании метода Spring.sum(Spring, Spring). Если минимальное, предпочтительное и максимальное значения совпадают, текущее значение всегда равно им; такая нерастяжимая пружина называется распоркой. Распорки можно создавать с помощью фабричного метода Spring.constant(int). Класс Spring также предоставляет фабричные методы для создания других видов пружин, в том числе пружин, зависящих от других пружин.
В SpringLayout положение каждого края зависит от положения только одного другого края. Если впоследствии добавить ограничение, создающее новую привязку для края, предыдущая привязка будет отброшена, и край останется зависимым от одного края. Пружины следует связывать только между краями контейнера и его непосредственных дочерних компонентов; поведение SpringLayout при получении ограничений, связывающих края компонентов из разных контейнеров (внутренних или внешних), не определено.
SpringLayout и другие менеджеры компоновки
Примечание: В отличие от многих менеджеров компоновки,SpringLayoutне задаёт автоматически расположение управляемых им компонентов. Если вы вручную создаёте графический интерфейс с использованиемSpringLayout, не забудьте инициализировать расположение компонентов, задав ограничения для западного/восточного и северного/южного положений.В зависимости от используемых ограничений может потребоваться явно задать размер контейнера.
Несмотря на простоту SpringLayout, он может имитировать поведение большинства других менеджеров компоновки. Для реализации некоторых возможностей, например переноса строк, предоставляемого FlowLayout, необходимо создать специализированный подкласс класса Spring.
SpringLayout также позволяет решать многие сложные задачи компоновки, которые нельзя решить вложенными комбинациями Box. При этом SpringLayout корректно соблюдает контракт LayoutManager2, поэтому его можно вкладывать в сочетании с другими менеджерами компоновки — этот подход может быть предпочтительнее создания ограничений, подразумеваемых другими менеджерами компоновки.
Асимптотическая сложность операции компоновки в SpringLayout линейна по числу ограничений (и/или компонентов).
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации предназначена для кратковременного хранения или RMI между приложениями, работающими с одной и той же версией Swing. Начиная с версии 1.4, в пакет java.beans добавлена поддержка длительного хранения всех JavaBeans. См. XMLEncoder.
- Начиная с версии:
- 1.4
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
SpringLayout.Constraints |
Объект Constraints содержит ограничения, определяющие, как изменяются размер и положение компонента в контейнере, управляемом SpringLayout. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
BASELINE |
Задаёт базовую линию компонента. |
static final String |
EAST |
Задаёт правый край ограничивающего прямоугольника компонента. |
static final String |
HEIGHT |
Задаёт высоту ограничивающего прямоугольника компонента. |
static final String |
HORIZONTAL_CENTER |
Задаёт горизонтальный центр ограничивающего прямоугольника компонента. |
static final String |
NORTH |
Задаёт верхний край ограничивающего прямоугольника компонента. |
static final String |
SOUTH |
Задаёт нижний край ограничивающего прямоугольника компонента. |
static final String |
VERTICAL_CENTER |
Задаёт вертикальный центр ограничивающего прямоугольника компонента. |
static final String |
WEST |
Задаёт левый край ограничивающего прямоугольника компонента. |
static final String |
WIDTH |
Задаёт ширину ограничивающего прямоугольника компонента. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SpringLayout() |
Создаёт новый SpringLayout. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addLayoutComponent |
Если constraints является экземпляром SpringLayout.Constraints, связывает ограничения с указанным компонентом. |
void |
addLayoutComponent |
Не выполняет никаких действий, поскольку этот менеджер компоновки не использует строку для каждого компонента. |
Spring |
getConstraint |
Возвращает пружину, управляющую расстоянием между указанным краем компонента и верхним или левым краем его родительского контейнера. |
SpringLayout.Constraints |
getConstraints |
Возвращает ограничения для указанного компонента. |
float |
getLayoutAlignmentX |
Возвращает 0.5f (по центру). |
float |
getLayoutAlignmentY |
Возвращает 0.5f (по центру). |
void |
invalidateLayout |
Инвалидирует компоновку, указывая, что кэшированную информацию менеджера компоновки следует отбросить. |
void |
layoutContainer |
Выполняет компоновку указанного контейнера. |
Dimension |
maximumLayoutSize |
Вычисляет максимальные размеры указанного контейнера с учётом содержащихся в нём компонентов. |
Dimension |
minimumLayoutSize |
Вычисляет минимальные размеры указанного контейнера с учётом содержащихся в нём компонентов. |
Dimension |
preferredLayoutSize |
Вычисляет предпочтительные размеры указанного контейнера с учётом содержащихся в нём компонентов. |
void |
putConstraint |
Связывает край e1 компонента c1 с краем e2 компонента c2, задавая фиксированное расстояние между краями. |
void |
putConstraint |
Связывает край e1 компонента c1 с краем e2 компонента c2. |
void |
removeLayoutComponent |
Удаляет ограничения, связанные с указанным компонентом. |
Подробное описание полей
NORTH
public static final String NORTH
- См. также:
SOUTH
public static final String SOUTH
- См. также:
EAST
public static final String EAST
- См. также:
WEST
public static final String WEST
- См. также:
HORIZONTAL_CENTER
public static final String HORIZONTAL_CENTER
- Начиная с версии:
- 1.6
- См. также:
VERTICAL_CENTER
public static final String VERTICAL_CENTER
- Начиная с версии:
- 1.6
- См. также:
BASELINE
public static final String BASELINE
- Начиная с версии:
- 1.6
- См. также:
WIDTH
public static final String WIDTH
- Начиная с версии:
- 1.6
- См. также:
HEIGHT
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— компонент, удаляемый из контейнера
minimumLayoutSize
public Dimension minimumLayoutSize(Container parent)
LayoutManager- Определено в:
-
minimumLayoutSizeв интерфейсеLayoutManager - Параметры:
-
parent— компонент, для которого выполняется компоновка - Возвращает:
- минимальный размер контейнера
- См. также:
preferredLayoutSize
public Dimension preferredLayoutSize(Container parent)
LayoutManager- Определено в:
-
preferredLayoutSizeв интерфейсеLayoutManager - Параметры:
-
parent— контейнер, для которого выполняется компоновка - Возвращает:
- предпочтительный размер контейнера
- См. также:
maximumLayoutSize
public Dimension maximumLayoutSize(Container parent)
LayoutManager2- Определено в:
-
maximumLayoutSizeв интерфейсеLayoutManager2 - Параметры:
-
parent— целевой контейнер - Возвращает:
- максимальный размер контейнера
- См. также:
addLayoutComponent
public void addLayoutComponent(Component component, Object constraints)
constraints является экземпляром SpringLayout.Constraints, связывает ограничения с указанным компонентом.- Определено в:
-
addLayoutComponentв интерфейсеLayoutManager2 - Параметры:
-
component— добавляемый компонент -
constraints— ограничения компонента - См. также:
getLayoutAlignmentX
public float getLayoutAlignmentX(Container p)
- Определено в:
-
getLayoutAlignmentXв интерфейсеLayoutManager2 - Параметры:
-
p— целевой контейнер - Возвращает:
- предпочтительное выравнивание по оси x
getLayoutAlignmentY
public float getLayoutAlignmentY(Container p)
- Определено в:
-
getLayoutAlignmentYв интерфейсеLayoutManager2 - Параметры:
-
p— целевой контейнер - Возвращает:
- предпочтительное выравнивание по оси y
invalidateLayout
public void invalidateLayout(Container p)
LayoutManager2- Определено в:
-
invalidateLayoutв интерфейсеLayoutManager2 - Параметры:
-
p— целевой контейнер
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
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— опорный компонент - См. также:
getConstraints
public SpringLayout.Constraints getConstraints(Component c)
GridBagLayout getConstraints, этот метод не клонирует ограничения. Если с компонентом не связано ни одного ограничения, метод возвращает объект ограничений по умолчанию, размещённый в точке 0,0 относительно Insets родительского контейнера, а его ширина и высота ограничены минимальным, максимальным и предпочтительным размерами компонента. Характеристики размера не фиксируются на момент вызова этого метода; вместо этого метод возвращает объект ограничений, характеристики которого отслеживают изменения характеристик компонента.- Параметры:
-
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— компонент, пружина края которого требуется - Возвращает:
- прокси-объект для пружины, управляющей расстоянием между указанным краем и верхним или левым краем родительского контейнера
- См. также:
layoutContainer
public void layoutContainer(Container parent)
LayoutManager- Определено в:
-
layoutContainerв интерфейсеLayoutManager - Параметры:
-
parent— контейнер, для которого выполняется компоновка
© 1993, 2025, 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/25/docs/api/java.desktop/javax/swing/SpringLayout.html