Source Code : BorderLayout Sample

Java Is Open Source Programming Language You Can Download From Java and Java Libraries From http://www.oracle.com. Click Here to download
We provide this code related to title for you to solve your developing problem easily. Libraries which is import in this program you can download from http://www.oracle.com. Click Here or search from google with Libraries Name you get jar file related it

BorderLayout Sample

BorderLayout Sample

/******************************************************************************
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * All right reserved. 
 * 
 * Created on Jan 30, 2004 11:52:21 PM by JACK
 * $Id$
 * 
 * visit: http://www.asprise.com/swt
 *****************************************************************************/

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

/**
 * Lays out a composite, arranging and resizing its components to fit in five
 * regions: north, south, east, west, and center.
 */
class BorderLayout extends Layout {
  // Region constants.
  public static final int NORTH = 0;
  public static final int SOUTH = 1;
  public static final int CENTER = 2;
  public static final int EAST = 3;
  public static final int WEST = 4;

  /**
   * Indicates the region that a control belongs to.
   *  
   */
  public static class BorderData {
    public int region = CENTER; // default.

    public BorderData() {
    }

    public BorderData(int region) {
      this.region = region;
    }
  }

  // Controls in all the regions.
  public Control[] controls = new Control[5];

  // Cached sizes.
  Point[] sizes;

  // Preferred width and height
  int width;
  int height;

  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.swt.widgets.Layout#computeSize(org.eclipse.swt.widgets.Composite,
   *      int, int, boolean)
   */
  protected Point computeSize(
    Composite composite,
    int wHint,
    int hHint,
    boolean flushCache) {

    if (sizes == null || flushCache == true)
      refreshSizes(composite.getChildren());
    int w = wHint;
    int h = hHint;
    if (w == SWT.DEFAULT)
      w = width;
    if (h == SWT.DEFAULT)
      h = height;

    return new Point(w, h);
  }

  /*
   * (non-Javadoc)
   * 
   * @see org.eclipse.swt.widgets.Layout#layout(org.eclipse.swt.widgets.Composite,
   *      boolean)
   */
  protected void layout(Composite composite, boolean flushCache) {
    if (flushCache || sizes == null)
      refreshSizes(composite.getChildren());

    Rectangle clientArea = composite.getClientArea();

    // Enough space for all.
    if (controls[NORTH] != null) {
      controls[NORTH].setBounds(
        clientArea.x,
        clientArea.y,
        clientArea.width,
        sizes[NORTH].y);
    }
    if (controls[SOUTH] != null) {
      controls[SOUTH].setBounds(
        clientArea.x,
        clientArea.y + clientArea.height - sizes[SOUTH].y,
        clientArea.width,
        sizes[SOUTH].y);
    }
    if (controls[WEST] != null) {
      controls[WEST].setBounds(
        clientArea.x,
        clientArea.y + sizes[NORTH].y,
        sizes[WEST].x,
        clientArea.height - sizes[NORTH].y - sizes[SOUTH].y);
    }
    if (controls[EAST] != null) {
      controls[EAST].setBounds(
        clientArea.x + clientArea.width - sizes[EAST].x,
        clientArea.y + sizes[NORTH].y,
        sizes[EAST].x,
        clientArea.height - sizes[NORTH].y - sizes[SOUTH].y);
    }
    if (controls[CENTER] != null) {
      controls[CENTER].setBounds(
        clientArea.x + sizes[WEST].x,
        clientArea.y + sizes[NORTH].y,
        clientArea.width - sizes[WEST].x - sizes[EAST].x,
        clientArea.height - sizes[NORTH].y - sizes[SOUTH].y);
    }

  }

  private void refreshSizes(Control[] children) {
    for (int i = 0; i < children.length; i++) {
      Object layoutData = children[i].getLayoutData();
      if (layoutData == null || (!(layoutData instanceof BorderData)))
        continue;
      BorderData borderData = (BorderData) layoutData;
      if (borderData.region < 0 || borderData.region > 4) // Invalid.
        continue;
      controls[borderData.region] = children[i];
    }

    width = 0;
    height = 0;

    if (sizes == null)
      sizes = new Point[5];

    for (int i = 0; i < controls.length; i++) {
      Control control = controls[i];
      if (control == null) {
        sizes[i] = new Point(0, 0);
      } else {
        sizes[i] = control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
      }
    }

    width = Math.max(width, sizes[NORTH].x);
    width =
      Math.max(width, sizes[WEST].x + sizes[CENTER].x + sizes[EAST].x);
    width = Math.max(width, sizes[SOUTH].x);

    height =
      Math.max(Math.max(sizes[WEST].y, sizes[EAST].y), sizes[CENTER].y)
        + sizes[NORTH].y
        + sizes[SOUTH].y;

  }

}

/******************************************************************************
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * All right reserved. 
 * 
 * Created on Jan 31, 2004 1:05:58 AM by JACK
 * $Id$
 * 
 * visit: http://www.asprise.com/swt
 *****************************************************************************/
public class BorderLayoutSample {
  Display display = new Display();
  Shell shell = new Shell(display);

  public BorderLayoutSample() {
    shell.setLayout(new BorderLayout());
    
    Button buttonWest = new Button(shell, SWT.PUSH);
    buttonWest.setText("West");
    buttonWest.setLayoutData(new BorderLayout.BorderData(BorderLayout.WEST));
    
    Button buttonEast = new Button(shell, SWT.PUSH);
    buttonEast.setText("East");
    buttonEast.setLayoutData(new BorderLayout.BorderData(BorderLayout.EAST));  

    Button buttonNorth = new Button(shell, SWT.PUSH);
    buttonNorth.setText("North");
    buttonNorth.setLayoutData(new BorderLayout.BorderData(BorderLayout.NORTH));
    
    Button buttonSouth = new Button(shell, SWT.PUSH);
    buttonSouth.setText("South");
    buttonSouth.setLayoutData(new BorderLayout.BorderData(BorderLayout.SOUTH));    
    
    Text text = new Text(shell, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    text.setText("Center");
    text.setLayoutData(new BorderLayout.BorderData(BorderLayout.CENTER));
    
    shell.pack();
    shell.open();
    //textUser.forceFocus();

    // Set up the event loop.
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        // If no more entries in event queue
        display.sleep();
      }
    }

    display.dispose();
  }

  private void init() {

  }

  public static void main(String[] args) {
    new BorderLayoutSample();
  }
}

           
       

Thank with us