Each containee, or child, has the following properties:
The graphical minimum size of a particular containee depends
on the platform, the label of the containee (for a control), and
style attributes specified when creating the containee. For example,
a button's minimum graphical size ensures that the entire text of the
label is visible. The graphical minimum size of a control (such as a
button) cannot be changed; it is fixed at creation time.
The graphical minimum size of a panel or pane depends on
the total minimum size of its children and the way that they are
arranged.
To select a size for a containee, its parent container considers the containee's requested minimum size rather than its graphical minimum size (assuming the requested minimum is larger than the graphical minimum). Unlike the graphical minimum, the requested minimum size of a containee can be changed by a programmer at any time using the min-width and min-height methods.
Unless a containee is stretchable (in a particular direction), it always shrinks to its minimum size (in the corresponding direction). Otherwise, containees are streched to fill all available space in a container. Each containee begins with a default stretchability. For example, buttons are not initially stretchable, whereas a one-line text field is initially stretchable in the horizontal direction. A programmer can change the stretchability of a containee at any time using the stretchable-width and stretchable-height methods.
A margin is whitespace surrounding a containee. Each containee's margin is independent of its minimum size, but from the container's point of view, a margin effectively increases the minimum size of the containee. For example, if a button has a vertical margin of 2, then the container must allocate enough room to leave two pixels of whitespace above and below the button, in addition to the space that is allocated for the button's minimum height. A programmer can adjust a containee's margin with horiz-margin and vert-margin. The default margin is 2 for a control, and 0 for any other type of containee.
In practice, the requested minimum size and margin of a control are rarely changed, although they are often changed for a canvas. Stretchablity is commonly adjusted for any type of containee, depending on the visual effect desired by the programmer.