JGoodies Forms :: Reference :: Cell Constraints
Author: Karsten Lentzsch
Description: The JGoodies Forms helps you layout and implement elegant Panel quickly and consistently.
Keywords: JGoodies Forms Java Layout Swing UI Design Usability Lentzsch Kiel
Date: 2003-07-31

# :: Reference :: Cell Constraints :: Each component managed by a FormLayout is associated with an instance of `CellConstraints` that specifies a component’s display area and alignment. The column and row origins are mandatory, but as we will see later, often a non-visual builder will automatically create the CellConstraints for you. By default the column and row span is just 1, and the alignments are inherited from the related column and row. If possible you should specify the aligment for the column and row, not for the component; this way you can reduce the amount of alignment specifications significantly. CellConstraints objects can be constructed in different ways using a mixture of ints, objects and strings. I recommend to specify the origin and span using ints and the alignment with strings - just to increase the code readability. ## Reusing CellConstraints You can reuse CellConstraints objects because they are cloned internally by the FormLayout. Hence you can write a condensed form
    CellConstraints cc = new CellConstraints();
    builder.addLabel("Name", cc.xy(1, 1));
    builder.add(nameField,   cc.xy(3, 1));
    builder.addLabel("Age",  cc.xy(1, 3));
    builder.add(ageField,    cc.xy(3, 3));
## Spanning Multiple Columns/Rows You can let components span multiple columns or rows, for example by using the CellConstraints method `#xywh` where you specify the x and y position of the leading cell and the width and height of the display area. Note: these components do not affect the size of the spanned columns or rows, nevertheless, they may expand the whole container. See also the FAQ for details and how to handle this situation. ## Examples 1) Creation methods intended for use by humans
     CellConstraints cc = new CellConstraints();
     cc.xy(2, 1);                          // second col, first row
     cc.xy(2, 1, "right, bottom");         // aligned to right and bottom
     cc.xy(2, 1, "r, b");                  // abbreviated alignment
     cc.xywh(2, 1, 4, 3);                  // spans 4 cols, 3 rows
     cc.xywh(2, 1, 4, 3, "right, bottom");
     cc.xywh(2, 1, 4, 3, "r, b");
2) Constructors intended for builders
     new CellConstraints();                // first col, first row
     new CellConstraints(2, 1);
     new CellConstraints(2, 1, 4, 3);
     new CellConstraints(2, 1, CellConstraints.RIGHT,
                               CellConstraints.BOTTOM);
3) Constructors intended for building UIs from XML
     CellConstraints cc = new CellConstraints();
     new CellConstraints("2, 1");
     new CellConstraints("2, 1, r, b");
     new CellConstraints("2, 1, 4, 3");
     new CellConstraints("2, 1, 4, 3, r, b");
(c) 2012 JGoodies |  |