# :: Reference :: Bounded Sizes :: Bounded sizes are used to restrict a layout element's initial size. They add context related layout information that the element does not or cannot provide. To use a bounded size, you typically combine a component size (min, pref or default) with a constant size as lower or upper bound. For example, a well designed command button honors the button's label and icon size, but also uses a minimum width. The latter increases the design consistency and often makes it easier to click on buttons with short labels. A Swing `JButton` is used in different contexts: form, button bar, button stack, toolbar with icons, toolbar with texts, toolbar in large button mode, etc. Since the JButton (or the ButtonUI) can only provide a single `preferredSize` that often lacks the context. And so, the button lacks information about context-related layout requirements. ## String Representations String representations for bounded sizes are used in the FormLayout constructors as well as in classes `ColumnSpec`, `RowSpec` and `Border`. The string encodings allow to set only a lower or upper bound, where the related Java objects allow to set both bounds at the same time, which is needed rarely.
    boundedSize ::=   MIN(constantSize;componentSize)
                    | MAX(constantSize;componentSize)
Note: The string representation uses max to specify a minimum size, and min to specify a maximum size. Think of this as a function - like `Math.max` and `Math.min`. The max function provides a lower bound, the min function an upper bound. ## Examples
    new ColumnSpec("max(50dlu;pref)");  // maximum of 50dlu and pref size

    new RowSpec("min(100dlu;pref)");    // minimum of 100dlu and pref size

    new FormLayout("max(50dlu;pref), 4dlu, max(100dlu;min)",
                   "p, 3dlu, p, 3dlu, max(200dlu;p):grow");
(c) 2006 JGoodies |  |