Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удален в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt.
final void wait(long timeoutMillis)
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Переводит текущий поток в ожидание до пробуждения, обычно посредством вызова notify или interrupt, либо до истечения заданного интервала реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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