Класс SpringLayout
- java.lang.Object
-
- javax.swing.SpringLayout
- Все реализованные интерфейсы:
- LayoutManager, LayoutManager2
public class SpringLayout extends Object implements LayoutManager2
A SpringLayout размещает дочерние компоненты своего контейнера в соответствии с набором ограничений. См. Как использовать SpringLayout в Руководстве Java для примеров использования SpringLayout.
Каждое ограничение, представленное объектом Spring, контролирует вертикальное или горизонтальное расстояние между двумя границами компонентов. Границы могут принадлежать любому дочернему компоненту контейнера или самому контейнеру. Например, допустимую ширину компонента можно выразить с помощью ограничения, контролирующего расстояние между западной (левой) и восточной (правой) границами компонента. Допустимые координаты y компонента можно выразить, ограничив расстояние между северной (верхней) границей компонента и северной границей его контейнера.
Каждый дочерний компонент контейнера, управляемого SpringLayout, а также сам контейнер, имеет ровно один набор ограничений, связанных с ним. Эти ограничения представлены объектом SpringLayout.Constraints. По умолчанию, SpringLayout создаёт ограничения, которые делают связанный компонент имеющим минимальные, предпочтительные и максимальные размеры, возвращаемые методами компонента Component.getMinimumSize(), Component.getPreferredSize() и Component.getMaximumSize(). Позиции x и y изначально не ограничены, поэтому до тех пор, пока вы не ограничите их, компонент будет расположен в координатах 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 против других менеджеров компоновки
Note: Unlike many layout managers, SpringLayout doesn't automatically set the location of the components it manages. If you hand-code a GUI that uses SpringLayout, remember to initialize component locations by constraining the west/east and north/south locations. Depending on the constraints you use, you may also need to set the size of the container explicitly.
Несмотря на простоту 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 Объект |
Поля
| Модификатор и тип | Поле и описание |
|---|---|
static String |
BASELINE Указывает базу компонента. |
static String |
EAST Указывает правую грань прямоугольника области компонента. |
static String |
HEIGHT Указывает высоту прямоугольника области компонента. |
static String |
HORIZONTAL_CENTER Указывает горизонтальный центр прямоугольника области компонента. |
static String |
NORTH Указывает верхнюю грань прямоугольника области компонента. |
static String |
SOUTH Указывает нижнюю грань прямоугольника области компонента. |
static String |
VERTICAL_CENTER Указывает вертикальный центр прямоугольника области компонента. |
static String |
WEST Указывает левую грань прямоугольника области компонента. |
static String |
WIDTH Указывает ширину прямоугольника области компонента. |
Конструкторы
| Конструктор и описание |
|---|
SpringLayout() Создаёт новый |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addLayoutComponent(Component component,
Object 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) Связывает грань |
void |
putConstraint(String e1,
Component c1,
Spring s,
String e2,
Component 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 - См. также:
-
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
getLayoutAlignmentY
public float getLayoutAlignmentY(Container p)
Возвращает 0,5f (по центру).
- Определено в:
-
getLayoutAlignmentYв интерфейсеLayoutManager2
invalidateLayout
public void invalidateLayout(Container p)
Описание скопировано из интерфейса: LayoutManager2
Отменяет компоновку, указывая, что если менеджер компоновки кэшировал информацию, её следует отбросить.
- Определено в:
-
invalidateLayoutв интерфейсеLayoutManager2
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 относительно отступов родителя и его ширина/высота ограничены минимальными, максимальными и предпочтительными размерами компонента. Характеристики размера не замораживаются в момент вызова этого метода; вместо этого этот метод возвращает объект ограничений, характеристики которого отслеживают характеристики компонента по мере их изменения.
- Параметры:
-
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- контейнер, который нужно разместить
© 1993, 2020, 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.