Laying Out Children of a Composite : Layout Basics « SWT « Java Tutorial

public void layout(boolean changed)

Setting the changed flag to true forces the layout to refresh any cached information about its children. On Windows, the information about the children is always updated regardless of the value of the changed flag.

Laying Out Children of a Composite
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class CompositeLayout {
  static int count = 0;

  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);

    shell.setLayout(new RowLayout());

    Button buttonAdd = new Button(shell, SWT.PUSH);
    buttonAdd.setText("Add new button");
    buttonAdd.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent e) {
        Button button = new Button(shell, SWT.PUSH);
        button.setText("Button #" + (count++));
        // shell.layout(true;
        // shell.pack(true);

    shell.setSize(450, 100);;

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {

17.93.Layout Basics
17.93.2.A few terms that are used frequently when discussing layouts
17.93.3.Setting Layouts
17.93.4.Using Layout Data Objects to control layoutUsing Layout Data Objects to control layout
17.93.5.Laying Out Children of a CompositeLaying Out Children of a Composite
17.93.6.Layout term: bounds, client areaLayout term: bounds, client area