Spec-Zone.ru › OpenJDK 25

Класс SpringLayout

java.lang.Object
javax.swing.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
См. также:
  • Spring
  • SpringLayout.Constraints

Краткое описание вложенных классов

Модификатор и тип Класс Описание
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(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 invalidateLayout(Container p)
Инвалидирует компоновку, указывая, что кэшированную информацию менеджера компоновки следует отбросить.
void layoutContainer(Container parent)
Выполняет компоновку указанного контейнера.
Dimension maximumLayoutSize(Container parent)
Вычисляет максимальные размеры указанного контейнера с учётом содержащихся в нём компонентов.
Dimension minimumLayoutSize(Container parent)
Вычисляет минимальные размеры указанного контейнера с учётом содержащихся в нём компонентов.
Dimension preferredLayoutSize(Container parent)
Вычисляет предпочтительные размеры указанного контейнера с учётом содержащихся в нём компонентов.
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)
Удаляет ограничения, связанные с указанным компонентом.

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

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

Подробное описание полей

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 — компонент, для которого выполняется компоновка
Возвращает:
минимальный размер контейнера
См. также:
  • LayoutManager.preferredLayoutSize(Container)

preferredLayoutSize

public Dimension preferredLayoutSize(Container parent)
Описание скопировано из интерфейса: LayoutManager
Вычисляет предпочтительные размеры указанного контейнера с учётом содержащихся в нём компонентов.
Определено в:
preferredLayoutSize в интерфейсе LayoutManager
Параметры:
parent — контейнер, для которого выполняется компоновка
Возвращает:
предпочтительный размер контейнера
См. также:
  • LayoutManager.minimumLayoutSize(Container)

maximumLayoutSize

public Dimension maximumLayoutSize(Container parent)
Описание скопировано из интерфейса: LayoutManager2
Вычисляет максимальные размеры указанного контейнера с учётом содержащихся в нём компонентов.
Определено в:
maximumLayoutSize в интерфейсе LayoutManager2
Параметры:
parent — целевой контейнер
Возвращает:
максимальный размер контейнера
См. также:
  • Component.getMaximumSize()
  • LayoutManager

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

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(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 относительно 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 — компонент, пружина края которого требуется
Возвращает:
прокси-объект для пружины, управляющей расстоянием между указанным краем и верхним или левым краем родительского контейнера
См. также:
  • NORTH
  • SOUTH
  • EAST
  • WEST
  • VERTICAL_CENTER
  • HORIZONTAL_CENTER
  • BASELINE

layoutContainer

public void layoutContainer(Container parent)
Описание скопировано из интерфейса: LayoutManager
Выполняет компоновку указанного контейнера.
Определено в:
layoutContainer в интерфейсе LayoutManager
Параметры:
parent — контейнер, для которого выполняется компоновка

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API