Класс SpringLayout
- Все реализуемые интерфейсы:
-
LayoutManager,LayoutManager2
public class SpringLayout extends Object implements LayoutManager2
SpringLayout размещает дочерние элементы своего связанного контейнера в соответствии с набором ограничений. См. Как использовать SpringLayout в Java Tutorial для примеров использования SpringLayout. Каждое ограничение, представленное объектом 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(javax.swing.Spring, javax.swing.Spring). Когда минимальные, предпочтительные и максимальные значения одинаковы, текущее значение всегда равно им; эта жёсткая пружина называется стойкой. Вы можете создать стойки с помощью фабричного метода Spring.constant(int). Класс Spring также предоставляет фабричные методы для создания других типов пружин, включая пружины, зависящие от других пружин.
В SpringLayout, положение каждой грани зависит от положения только одной другой грани. Если ограничение впоследствии добавляется для создания нового связывания для грани, предыдущее связывание отбрасывается, и грань остаётся зависимой от одной грани. Пружины должны быть прикреплены только между границами контейнера и его непосредственных дочерних элементов; поведение SpringLayout при представлении ограничений, связывающих границы компонентов из разных контейнеров (внутренних или внешних), не определено.
SpringLayout против других менеджеров компоновки
Примечание: В отличие от многих менеджеров компоновки,SpringLayoutне автоматически устанавливает расположение управляемых им компонентов. Если вы вручную создаёте графический интерфейс, который используетSpringLayout, не забудьте инициализировать расположение компонентов, ограничив западные/восточные и северные/южные позиции.В зависимости от используемых ограничений, вам также может потребоваться явно установить размер контейнера.
Несмотря на простоту SpringLayout, он может эмулировать поведение большинства других менеджеров компоновки. Для некоторых функций, таких как перенос строки, предоставляемый FlowLayout, вам понадобится создать специальный подкласс класса Spring.
SpringLayout также предоставляет способ решения многих сложных проблем компоновки, которые невозможно решить с помощью вложенных комбинаций Box. Тем не менее, SpringLayout правильно соблюдает контракт LayoutManager2 и поэтому может быть вложен с другими менеджерами компоновки — подход, который может быть предпочтительнее создания ограничений, подразумеваемых другими менеджерами компоновки.
Асимптотическая сложность операции компоновки SpringLayout линейна относительно количества ограничений (и/или компонентов).
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долговременного хранения всех JavaBeans была добавлена в пакет java.beans. См. XMLEncoder.
- С момента:
- 1.4
- См. также:
Краткое описание вложенных классов
| Modifier and Type | Class | Description |
|---|---|---|
static class |
SpringLayout.Constraints |
Объект Constraints содержит ограничения, определяющие, как изменяются размер и положение компонента в контейнере, управляемом SpringLayout. |
Краткое описание полей
| Modifier and Type | Field | Description |
|---|---|---|
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 |
Указывает ширину прямоугольника, ограничивающего компонент. |
Краткое описание конструкторов
| Constructor | Description |
|---|---|
SpringLayout() |
Создаёт новый SpringLayout. |
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
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
- Since:
- 1.6
- См. также:
VERTICAL_CENTER
public static final String VERTICAL_CENTER
- Since:
- 1.6
- См. также:
BASELINE
public static final String BASELINE
- Since:
- 1.6
- См. также:
WIDTH
public static final String WIDTH
- Since:
- 1.6
- См. также:
HEIGHT
public static final String HEIGHT
- Since:
- 1.6
- См. также:
Подробное описание конструкторов
SpringLayout
public SpringLayout()
SpringLayout. Подробное описание методов
addLayoutComponent
public void addLayoutComponent(String name, Component c)
- Specified by:
-
addLayoutComponentв интерфейсеLayoutManager - Parameters:
-
name- строка, которая должна быть ассоциирована с компонентом -
c- компонент, который должен быть добавлен
removeLayoutComponent
public void removeLayoutComponent(Component c)
- Specified by:
-
removeLayoutComponentв интерфейсеLayoutManager - Parameters:
-
c- компонент, который удаляется из контейнера
minimumLayoutSize
public Dimension minimumLayoutSize(Container parent)
LayoutManager- Specified by:
-
minimumLayoutSizeв интерфейсеLayoutManager - Parameters:
-
parent- компонент, который должен быть размещен - Returns:
- минимальный размер контейнера
- См. также:
preferredLayoutSize
public Dimension preferredLayoutSize(Container parent)
LayoutManager- Specified by:
-
preferredLayoutSizeв интерфейсеLayoutManager - Parameters:
-
parent- контейнер, который должен быть размещен - Returns:
- предпочтительный размер контейнера
- См. также:
maximumLayoutSize
public Dimension maximumLayoutSize(Container parent)
LayoutManager2- Specified by:
-
maximumLayoutSizeв интерфейсеLayoutManager2 - Parameters:
-
parent- целевой контейнер - Returns:
- максимальный размер контейнера
- См. также:
addLayoutComponent
public void addLayoutComponent(Component component, Object constraints)
constraints является экземпляром SpringLayout.Constraints, связывает ограничения с указанным компонентом.- Specified by:
-
addLayoutComponentв интерфейсеLayoutManager2 - Parameters:
-
component- добавляемый компонент -
constraints- ограничения компонента - См. также:
getLayoutAlignmentX
public float getLayoutAlignmentX(Container p)
- Specified by:
-
getLayoutAlignmentXв интерфейсеLayoutManager2 - Parameters:
-
p- целевой контейнер - Returns:
- предпочтение выравнивания по оси X
getLayoutAlignmentY
public float getLayoutAlignmentY(Container p)
- Specified by:
-
getLayoutAlignmentYв интерфейсеLayoutManager2 - Parameters:
-
p- целевой контейнер - Returns:
- предпочтение выравнивания по оси Y
invalidateLayout
public void invalidateLayout(Container p)
LayoutManager2- Specified by:
-
invalidateLayoutв интерфейсеLayoutManager2 - Parameters:
-
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- компонент якоря - См. также:
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:
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:
layoutContainer
public void layoutContainer(Container parent)
LayoutManager- Specified by:
-
layoutContainerin interfaceLayoutManager - Parameters:
-
parent- контейнер, который необходимо разместить
© 1993, 2021, 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/17/docs/api/java.desktop/javax/swing/SpringLayout.html