Instances of this class control the position and size of the
children of a composite control by using FormAttachments
to optionally configure the left, top, right and bottom edges of
each child.
The following example code creates a FormLayout and then sets
it into a Shell :
Display display = new Display ();
Shell shell = new Shell(display);
FormLayout layout = new FormLayout();
layout.marginWidth = 3;
layout.marginHeight = 3;
shell.setLayout(layout);
To use a FormLayout , create a FormData with
FormAttachment for each child of Composite .
The following example code attaches button1 to the top
and left edge of the composite and button2 to the right
edge of button1 and the top and right edges of the
composite:
FormData data1 = new FormData();
data1.left = new FormAttachment(0, 0);
data1.top = new FormAttachment(0, 0);
button1.setLayoutData(data1);
FormData data2 = new FormData();
data2.left = new FormAttachment(button1);
data2.top = new FormAttachment(0, 0);
data2.right = new FormAttachment(100, 0);
button2.setLayoutData(data2);
Each side of a child control can be attached to a position in the parent
composite, or to other controls within the Composite by
creating instances of FormAttachment and setting them into
the top, bottom, left, and right fields of the child's FormData .
If a side is not given an attachment, it is defined as not being attached
to anything, causing the child to remain at its preferred size. If a child
is given no attachment on either the left or the right or top or bottom, it is
automatically attached to the left and top of the composite respectively.
The following code positions button1 and button2
but relies on default attachments:
FormData data2 = new FormData();
data2.left = new FormAttachment(button1);
data2.right = new FormAttachment(100, 0);
button2.setLayoutData(data2);
IMPORTANT: Do not define circular attachments. For example, do not attach
the right edge of button1 to the left edge of button2
and then attach the left edge of button2 to the right edge of
button1 . This will over constrain the layout, causing undefined
behavior. The algorithm will terminate, but the results are undefined.
See Also: FormData See Also: FormAttachment since: 2.0 |