GroupLayout is a LayoutManager that hierarchically groups components
in order to position them in a Container. GroupLayout is intended for use
by builders, but may be hand-coded as well. Grouping is done by instances of the
Group class. GroupLayout supports two types of groups. A
sequential group positions its child elements sequentially, one after another. A
parallel group aligns its child elements in one of four ways.
Each group may contain any number of elements, where an element is a Group,
Component, or gap. A gap can be thought of as an invisible component with
a minimum, preferred and maximum size. In addition GroupLayout supports a
preferred gap, whose value comes from LayoutStyle.
Elements are similar to a spring. Each element has a range as specified by a
minimum, preferred and maximum. Gaps have either a developer-specified range, or
a range determined by LayoutStyle. The range for Components is determined
from the Component's getMinimumSize, getPreferredSize and
getMaximumSize methods. In addition, when adding Components you may specify
a particular range to use instead of that from the component. The range for a
Group is determined by the type of group. A ParallelGroup's range is
the maximum of the ranges of its elements. A SequentialGroup's range is
the sum of the ranges of its elements.
GroupLayout treats each axis independently. That is, there is a group
representing the horizontal axis, and a group representing the vertical axis.
The horizontal group is responsible for determining the minimum, preferred and
maximum size along the horizontal axis as well as setting the x and width of the
components contained in it. The vertical group is responsible for determining
the minimum, preferred and maximum size along the vertical axis as well as
setting the y and height of the components contained in it. Each Component must
exist in both a horizontal and vertical group, otherwise an
IllegalStateException is thrown during layout, or when the minimum,
preferred or maximum size is requested.
E