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