SWT Java Tutorial

Grow as their parent composite grows.
Shrink as their parent composite shrinks.
Usually, you enable these properties with controls such as Text, List, Tree, Table, or Canvas.
The default value of each of the two properties is false.

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class GridLayoutGrabExpressionSpace {
  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    gridLayout.makeColumnsEqualWidth = true;
    
    shell.setLayout(gridLayout);
    Button button1 = new Button(shell, SWT.PUSH);
    button1.setText("button1"); // Default alignment
    List list = new List(shell, SWT.BORDER);
    list.add("item 1");
    list.add("item 2");
    list.add("item 3");
    GridData gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = GridData.FILL;
    list.setLayoutData(gridData);
    Button button2 = new Button(shell, SWT.PUSH);
    button2.setText("button #2");
    button2.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_END));
    Button button3 = new Button(shell, SWT.PUSH);
    button3.setText("3");
    
    shell.setSize(450, 400);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}