A
Constraints
object holds the constraints that govern the way a component's size and position change in a container controlled by a
SpringLayout
. A
Constraints
object is like a
Rectangle
, in that it has
x
,
y
,
width
, and
height
properties. In the
Constraints
object, however, these properties have
Spring
values instead of integers. In addition, a
Constraints
object can be manipulated as four edges -- north, south, east, and west -- using the
constraint
property.
The following formulas are always true for a Constraints
object (here WEST and x
are synonyms, as are and NORTH and y
):
EAST = WEST + WIDTH SOUTH = NORTH + HEIGHT HORIZONTAL_CENTER = WEST + WIDTH/2 VERTICAL_CENTER = NORTH + HEIGHT/2 ABSOLUTE_BASELINE = NORTH + RELATIVE_BASELINE
For example, if you have specified the WIDTH and WEST (X) location the EAST is calculated as WEST + WIDTH. If you instead specified the WIDTH and EAST locations the WEST (X) location is then calculated as EAST - WIDTH.
[RELATIVE_BASELINE is a private constraint that is set automatically when the SpringLayout.Constraints(Component) constructor is called or when a constraints object is registered with a SpringLayout object.]
Note: In this document, operators represent methods in the Spring
class. For example, "a + b" is equal to Spring.sum(a, b)
, and "a - b" is equal to Spring.sum(a, Spring.minus(b))
. See the {@link Spring Spring API documentation}for further details of spring arithmetic.
Because a Constraints
object's properties -- representing its edges, size, and location -- can all be set independently and yet are interrelated, a Constraints
object can become over-constrained. For example, if the WEST
, WIDTH
and EAST
edges are all set, steps must be taken to ensure that the first of the formulas above holds. To do this, the Constraints
object throws away the least recently set constraint so as to make the formulas hold.
@since 1.4