Spec-Zone.ru › OpenJDK 24

Класс SpringLayout

java.lang.Object
javax.swing.SpringLayout
Все реализованные интерфейсы:
LayoutManager, LayoutManager2
public class SpringLayout extends Object implements LayoutManager2
Управляющий компоновкой, который располагает дочерние компоненты своего контейнера в соответствии с набором ограничений. См. Как использовать SpringLayout в Руководстве по Java для примеров использования управляющего компоновкой.

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

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

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

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

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

SpringLayout по сравнению с другими управляющими компоновкой

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

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

Несмотря на простоту 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 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)
Удаляет ограничения, связанные с указанным компонентом.

Методы, объявленные в классе java.lang.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(java.awt.Container)

preferredLayoutSize

public Dimension preferredLayoutSize(Container parent)
Описание скопировано из интерфейса: LayoutManager
Вычисляет предпочтительные размеры для указанного контейнера, учитывая содержащиеся в нём компоненты.
Указано в:
preferredLayoutSize в интерфейсе LayoutManager
Параметры:
parent - контейнер для компоновки
Возвращает:
предпочтительные размеры контейнера
См. также:
  • LayoutManager.minimumLayoutSize(java.awt.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
во всех последующих операциях выравнивания.
Parameters:
e1 - край зависимого элемента
c1 - компонент зависимого элемента
pad - фиксированное расстояние между зависимым и якорным элементами
e2 - край якорного элемента
c2 - компонент якорного элемента
See Also:
  • 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.
Parameters:
e1 - край зависимого элемента
c1 - компонент зависимого элемента
s - пружина, связывающая зависимый и якорный элементы
e2 - край якорного элемента
c2 - компонент якорного элемента
See Also:
  • 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 относительно отступов родительского элемента, а его ширина/высота ограничены минимальными, максимальными и предпочтительными размерами компонента. Характеристики размера не замораживаются в момент вызова этого метода; вместо этого метод возвращает объект ограничений, характеристики которого отслеживают характеристики компонента по мере их изменения.
Parameters:
c - компонент, для которого требуется получить ограничения
Returns:
ограничения для указанного компонента

getConstraint

public Spring getConstraint(String edgeName, Component c)
Возвращает пружину, управляющую расстоянием между указанным краем компонента и верхним или левым краем его родительского элемента. Вместо возвращения текущей привязки для края, этот метод возвращает прокси, который отслеживает характеристики края даже если край впоследствии перепривязывается. Прокси предназначены для использования в средах построения, где удобно позволить пользователю определять ограничения для макета в любом порядке. Однако прокси предоставляют возможность создания циклических зависимостей между ограничениями макета. Такие циклы обнаруживаются внутренне SpringLayout, чтобы операция выравнивания всегда завершалась.
Parameters:
edgeName - должно быть одним из SpringLayout.NORTH, SpringLayout.SOUTH, SpringLayout.EAST, SpringLayout.WEST, SpringLayout.VERTICAL_CENTER, SpringLayout.HORIZONTAL_CENTER или SpringLayout.BASELINE
c - компонент, для которого требуется пружина края
Returns:
прокси для пружины, управляющей расстоянием между указанным краем и верхним или левым краем его родительского элемента
See Also:
  • NORTH
  • SOUTH
  • EAST
  • WEST
  • VERTICAL_CENTER
  • HORIZONTAL_CENTER
  • BASELINE

layoutContainer

public void layoutContainer(Container parent)
Описание скопировано из интерфейса: LayoutManager
Выравнивает указанный контейнер.
Specified by:
layoutContainer в интерфейсе LayoutManager
Parameters:
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/SpringLayout.html

Spec-Zone.ru

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