Java/SWT JFace Eclipse/Tab

Материал из Java эксперт
Перейти к: навигация, поиск

Create a CTabFolder with min and max buttons, as well as close button and

/*
 * Create a CTabFolder with min and max buttons, as well as close button and 
 * image only on selected tab.
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Adapter;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Snippet165 {
  public static void main(String[] args) {
    Display display = new Display();
    Image image = new Image(display, 16, 16);
    GC gc = new GC(image);
    gc.setBackground(display.getSystemColor(SWT.COLOR_BLUE));
    gc.fillRectangle(0, 0, 16, 16);
    gc.setBackground(display.getSystemColor(SWT.COLOR_YELLOW));
    gc.fillRectangle(3, 3, 10, 10);
    gc.dispose();
    final Shell shell = new Shell(display);
    shell.setLayout(new GridLayout());
    final CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
    folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    folder.setSimple(false);
    folder.setUnselectedImageVisible(false);
    folder.setUnselectedCloseVisible(false);
    for (int i = 0; i < 8; i++) {
      CTabItem item = new CTabItem(folder, SWT.CLOSE);
      item.setText("Item " + i);
      item.setImage(image);
      Text text = new Text(folder, SWT.MULTI | SWT.V_SCROLL
          | SWT.H_SCROLL);
      text.setText("Text for item " + i
          + "\n\none, two, three\n\nabcdefghijklmnop");
      item.setControl(text);
    }
    folder.setMinimizeVisible(true);
    folder.setMaximizeVisible(true);
    folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
      public void minimize(CTabFolderEvent event) {
        folder.setMinimized(true);
        shell.layout(true);
      }
      public void maximize(CTabFolderEvent event) {
        folder.setMaximized(true);
        folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
            true));
        shell.layout(true);
      }
      public void restore(CTabFolderEvent event) {
        folder.setMinimized(false);
        folder.setMaximized(false);
        folder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
            false));
        shell.layout(true);
      }
    });
    shell.setSize(300, 300);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    image.dispose();
    display.dispose();
  }
}





Creates a tabbed display with a single tab

//Send questions, comments, bug reports, etc. to the authors:
//Rob Warner (rwarner@interspatial.ru)
//Robert Harris (rbrt_harris@yahoo.ru)
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.*;
/**
 * Creates a tabbed display with a single tab
 */
public class TabSimple {
  public static void main(String[] args) {
    new TabSimple().run();
  }
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setText("Simple Tabs");
    TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
    TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
}





Creates a tabbed display with four tabs and a few controls

//Send questions, comments, bug reports, etc. to the authors:
//Rob Warner (rwarner@interspatial.ru)
//Robert Harris (rbrt_harris@yahoo.ru)
import java.io.*;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * Creates a tabbed display with four tabs, and a few controls on each page
 */
public class TabComplex {
  private static final String IMAGE_PATH = "images"
      + System.getProperty("file.separator");
  private Image circle;
  private Image square;
  private Image triangle;
  private Image star;
  
  /**
   * Runs the application
   */
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    shell.setText("Complex Tabs");
    createImages(shell);
    createContents(shell);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
  /**
   * Creates the contents
   * 
   * @param shell the parent shell
   */
  private void createContents(Shell shell) {
    // Create the containing tab folder
    final TabFolder tabFolder = new TabFolder(shell, SWT.NONE);
    // Create each tab and set its text, tool tip text,
    // image, and control
    TabItem one = new TabItem(tabFolder, SWT.NONE);
    one.setText("one");
    one.setToolTipText("This is tab one");
    one.setImage(circle);
    one.setControl(getTabOneControl(tabFolder));
    TabItem two = new TabItem(tabFolder, SWT.NONE);
    two.setText("two");
    two.setToolTipText("This is tab two");
    two.setImage(square);
    two.setControl(getTabTwoControl(tabFolder));
    TabItem three = new TabItem(tabFolder, SWT.NONE);
    three.setText("three");
    three.setToolTipText("This is tab three");
    three.setImage(triangle);
    three.setControl(getTabThreeControl(tabFolder));
    TabItem four = new TabItem(tabFolder, SWT.NONE);
    four.setText("four");
    four.setToolTipText("This is tab four");
    four.setImage(star);
    // Select the third tab (index is zero-based)
    tabFolder.setSelection(2);
    // Add an event listener to write the selected tab to stdout
    tabFolder.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) {
        System.out.println(tabFolder.getSelection()[0].getText() + " selected");
      }
    });
  }
  /**
   * Creates the images
   * 
   * @param shell the parent shell
   */
  private void createImages(Shell shell) {
    try {
      circle = new Image(shell.getDisplay(), new FileInputStream(IMAGE_PATH
          + "circle.gif"));
      square = new Image(shell.getDisplay(), new FileInputStream(IMAGE_PATH
          + "square.gif"));
      star = new Image(shell.getDisplay(), new FileInputStream(IMAGE_PATH
          + "star.gif"));
      triangle = new Image(shell.getDisplay(), new FileInputStream(IMAGE_PATH
          + "triangle.gif"));
    } catch (IOException e) {
      // Images not found; handle gracefully
    }
  }
  /**
   * Disposes the images
   */
  private void disposeImages() {
    if (circle != null)
      circle.dispose();
    if (square != null)
      square.dispose();
    if (star != null)
      star.dispose();
    if (triangle != null)
      triangle.dispose();
  }
  /**
   * Gets the control for tab one
   * 
   * @param tabFolder the parent tab folder
   * @return Control
   */
  private Control getTabOneControl(TabFolder tabFolder) {
    // Create a composite and add four buttons to it
    Composite composite = new Composite(tabFolder, SWT.NONE);
    composite.setLayout(new FillLayout(SWT.VERTICAL));
    new Button(composite, SWT.PUSH).setText("Button one");
    new Button(composite, SWT.PUSH).setText("Button two");
    new Button(composite, SWT.PUSH).setText("Button three");
    new Button(composite, SWT.PUSH).setText("Button four");
    return composite;
  }
  /**
   * Gets the control for tab two
   * 
   * @param tabFolder the parent tab folder
   * @return Control
   */
  private Control getTabTwoControl(TabFolder tabFolder) {
    // Create a multi-line text field
    return new Text(tabFolder, SWT.BORDER | SWT.MULTI | SWT.WRAP);
  }
  /**
   * Gets the control for tab three
   * 
   * @param tabFolder the parent tab folder
   * @return Control
   */
  private Control getTabThreeControl(TabFolder tabFolder) {
    // Create some labels and text fields
    Composite composite = new Composite(tabFolder, SWT.NONE);
    composite.setLayout(new RowLayout());
    new Label(composite, SWT.LEFT).setText("Label One:");
    new Text(composite, SWT.BORDER);
    new Label(composite, SWT.RIGHT).setText("Label Two:");
    new Text(composite, SWT.BORDER);
    return composite;
  }
  /**
   * The entry point for the application
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new TabComplex().run();
  }
}





Demonstrates CTabFolder

//Send questions, comments, bug reports, etc. to the authors:
//Rob Warner (rwarner@interspatial.ru)
//Robert Harris (rbrt_harris@yahoo.ru)
import org.eclipse.swt.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
/**
 * This class demonstrates CTabFolder
 */
public class ShowCTabFolder {
  // Since CTabFolder does not have a getInsertMark() method,
  // store the value so we can keep track of it
  private int insertMark = -1;
  private CTabFolder tabFolder;
  /**
   * Runs the application
   */
  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("Show CTabFolder");
    createContents(shell);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }
  /**
   * Creates the window"s contents
   * 
   * @param shell the parent shell
   */
  private void createContents(Shell shell) {
    shell.setLayout(new GridLayout(1, true));
    // Create the buttons to create tabs
    Composite composite = new Composite(shell, SWT.NONE);
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    composite.setLayout(new RowLayout());
    createButtons(composite);
    // Create the tabs
    tabFolder = new CTabFolder(shell, SWT.TOP);
    tabFolder.setBorderVisible(true);
    tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
    Display display = shell.getDisplay();
    // Set up a gradient background for the selected tab
    tabFolder.setSelectionBackground(new Color[] {
        display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW),
        display.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW),
        display.getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW)}, new int[] { 50,
        100});
    // Add a listener to get the close button on each tab
    tabFolder.addCTabFolderListener(new CTabFolderAdapter() {
      public void itemClosed(CTabFolderEvent event) {}
    });
  }
  /**
   * Creates the buttons for moving the insert mark and adding a tab
   * 
   * @param composite the parent composite
   */
  private void createButtons(Composite composite) {
    // Move mark left
    Button button = new Button(composite, SWT.PUSH);
    button.setText("<<");
    button.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        if (insertMark > -1) {
          --insertMark;
          resetInsertMark();
        }
      }
    });
    // Move mark right
    button = new Button(composite, SWT.PUSH);
    button.setText(">>");
    button.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        if (insertMark < tabFolder.getItemCount() - 1) {
          ++insertMark;
          resetInsertMark();
        }
      }
    });
    // Add a tab
    button = new Button(composite, SWT.PUSH);
    button.setText("Add Tab");
    button.addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(SelectionEvent event) {
        new CTabItem(tabFolder, SWT.NONE, insertMark + 1).setText("Tab ("
            + (insertMark + 1) + ")");
      }
    });
  }
  /**
   * Moves the insert mark to the new location
   */
  private void resetInsertMark() {
    tabFolder.setInsertMark(insertMark, true);
    // Workaround for bug #32846
    if (insertMark == -1) {
      tabFolder.redraw();
    }
  }
  /**
   * The application entry point
   * 
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    new ShowCTabFolder().run();
  }
}





implement tab traversal (behave like a tab group)

/*
 * Canvas example snippet: implement tab traversal (behave like a tab group)
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Snippet21 {
  public static void main(String[] args) {
    Display display = new Display();
    final Color red = display.getSystemColor(SWT.COLOR_RED);
    final Color blue = display.getSystemColor(SWT.COLOR_BLUE);
    Shell shell = new Shell(display);
    Button b = new Button(shell, SWT.PUSH);
    b.setBounds(10, 10, 100, 32);
    b.setText("Button");
    shell.setDefaultButton(b);
    final Canvas c = new Canvas(shell, SWT.BORDER);
    c.setBounds(10, 50, 100, 32);
    c.addListener(SWT.Traverse, new Listener() {
      public void handleEvent(Event e) {
        switch (e.detail) {
        /* Do tab group traversal */
        case SWT.TRAVERSE_ESCAPE:
        case SWT.TRAVERSE_RETURN:
        case SWT.TRAVERSE_TAB_NEXT:
        case SWT.TRAVERSE_TAB_PREVIOUS:
        case SWT.TRAVERSE_PAGE_NEXT:
        case SWT.TRAVERSE_PAGE_PREVIOUS:
          e.doit = true;
          break;
        }
      }
    });
    c.addListener(SWT.FocusIn, new Listener() {
      public void handleEvent(Event e) {
        c.setBackground(red);
      }
    });
    c.addListener(SWT.FocusOut, new Listener() {
      public void handleEvent(Event e) {
        c.setBackground(blue);
      }
    });
    c.addListener(SWT.KeyDown, new Listener() {
      public void handleEvent(Event e) {
        System.out.println("KEY");
        for (int i = 0; i < 64; i++) {
          Color c1 = red, c2 = blue;
          if (c.isFocusControl()) {
            c1 = blue;
            c2 = red;
          }
          c.setBackground(c1);
          c.update();
          c.setBackground(c2);
        }
      }
    });
    Text t = new Text(shell, SWT.SINGLE | SWT.BORDER);
    t.setBounds(10, 85, 100, 32);
    Text r = new Text(shell, SWT.MULTI | SWT.BORDER);
    r.setBounds(10, 120, 100, 32);
    c.setFocus();
    shell.setSize(200, 200);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Prevent an item from closing

/*
 * CTabFolder example snippet: prevent an item from closing
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabFolder2Adapter;
import org.eclipse.swt.custom.CTabFolderEvent;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Snippet82 {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    CTabFolder folder = new CTabFolder(shell, SWT.BORDER);
    for (int i = 0; i < 4; i++) {
      CTabItem item = new CTabItem(folder, SWT.CLOSE);
      item.setText("Item " + i);
      Text text = new Text(folder, SWT.MULTI);
      text.setText("Content for Item " + i);
      item.setControl(text);
    }
    final CTabItem specialItem = new CTabItem(folder, SWT.CLOSE);
    specialItem.setText("Don"t Close Me");
    Text text = new Text(folder, SWT.MULTI);
    text.setText("This tab can never be closed");
    specialItem.setControl(text);
    folder.addCTabFolder2Listener(new CTabFolder2Adapter() {
      public void close(CTabFolderEvent event) {
        if (event.item.equals(specialItem)) {
          event.doit = false;
        }
      }
    });
    final CTabItem noCloseItem = new CTabItem(folder, SWT.NONE);
    noCloseItem.setText("No Close Button");
    Text text2 = new Text(folder, SWT.MULTI);
    text2.setText("This tab does not have a close button");
    noCloseItem.setControl(text2);
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Prevent Tab from traversing out of a control

/*
 * Control example snippet: prevent Tab from traversing out of a control
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class Snippet127 {
public static void main (String [] args) {
  Display display = new Display ();
  Shell shell = new Shell (display);
  Button button1 = new Button(shell, SWT.PUSH);
  button1.setBounds(10,10,80,30);
  button1.setText("no traverse");
  button1.addTraverseListener(new TraverseListener () {
    public void keyTraversed(TraverseEvent e) {
      switch (e.detail) {
        case SWT.TRAVERSE_TAB_NEXT:
        case SWT.TRAVERSE_TAB_PREVIOUS: {
          e.doit = false;
        }
      }
    }
  });
  Button button2 = new Button (shell, SWT.PUSH);
  button2.setBounds(100,10,80,30);
  button2.setText("can traverse");
  shell.pack ();
  shell.open();
  while (!shell.isDisposed ()) {
    if (!display.readAndDispatch ()) display.sleep ();
  }
  display.dispose ();
}
}





Set the tab traversal order of children

/*
 * Composite example snippet: set the tab traversal order of children
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.rubo;
import org.eclipse.swt.widgets.ruposite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
public class Snippet75 {
  public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new RowLayout());
    Composite c1 = new Composite(shell, SWT.BORDER);
    c1.setLayout(new RowLayout());
    Button b1 = new Button(c1, SWT.PUSH);
    b1.setText("B1");
    Button[] radios = new Button[3];
    for (int i = 0; i < radios.length; i++) {
      radios[i] = new Button(c1, SWT.RADIO);
      radios[i].setText("R" + (i == 1 ? "&" : "") + i);
    }
    Button b2 = new Button(c1, SWT.PUSH);
    b2.setText("B2");
    List l1 = new List(c1, SWT.SINGLE | SWT.BORDER);
    l1.setItems(new String[] { "L1" });
    Button b3 = new Button(c1, SWT.PUSH);
    b3.setText("B&3");
    Button b3_1 = new Button(c1, SWT.PUSH);
    b3_1.setText("B3_1");
    Composite c2 = new Composite(shell, SWT.BORDER);
    c2.setLayout(new RowLayout());
    Button b4 = new Button(c2, SWT.PUSH);
    b4.setText("B&4");
    Button b5 = new Button(c2, SWT.PUSH);
    b5.setText("B&5");
    List l2 = new List(shell, SWT.SINGLE | SWT.BORDER);
    l2.setItems(new String[] { "L2" });
    ToolBar tb1 = new ToolBar(shell, SWT.FLAT | SWT.BORDER);
    ToolItem i1 = new ToolItem(tb1, SWT.RADIO);
    i1.setText("I1");
    ToolItem i2 = new ToolItem(tb1, SWT.RADIO);
    i2.setText("I&2");
    Combo combo1 = new Combo(tb1, SWT.READ_ONLY | SWT.BORDER);
    combo1.setItems(new String[] { "C1" });
    combo1.setText("C1");
    combo1.pack();
    ToolItem i3 = new ToolItem(tb1, SWT.SEPARATOR);
    i3.setWidth(combo1.getSize().x);
    i3.setControl(combo1);
    i3.setText("I3");
    ToolItem i4 = new ToolItem(tb1, SWT.PUSH);
    i4.setText("I4");
    ToolItem i5 = new ToolItem(tb1, SWT.CHECK);
    i5.setText("I5");
    Button b6 = new Button(shell, SWT.PUSH);
    b6.setText("B&6");
    Composite c4 = new Composite(shell, SWT.BORDER);
    c4.setSize(32, 32);
    Composite c5 = new Composite(c4, SWT.BORDER);
    c5.setSize(20, 20);
    Control[] list1 = new Control[] { b2, b1, b3_1, b3 };
    c1.setTabList(list1);
    Control[] list2 = new Control[] { c1, b6, tb1, c4, c2, l2 };
    shell.setTabList(list2);
    shell.pack();
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





SWT Tab Control

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class TabClass {
  public static void main(String[] args) {
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("Tab Folder Example");
    shell.setSize(450, 250);
    final TabFolder tabFolder = new TabFolder(shell, SWT.BORDER);
    for (int loopIndex = 0; loopIndex < 10; loopIndex++) {
      TabItem tabItem = new TabItem(tabFolder, SWT.NULL);
      tabItem.setText("Tab " + loopIndex);
      Text text = new Text(tabFolder, SWT.BORDER);
      text.setText("This is page " + loopIndex);
      tabItem.setControl(text);
    }
    tabFolder.setSize(400, 200);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}





Tabbed Example

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.ruposite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class TabbedShellExample {
  Display d;
  Shell s;
  TabbedShellExample() {
    d = new Display();
    s = new Shell(d);
    s.setSize(250, 200);
    
    s.setText("A Tabbed Shell Example");
    s.setLayout(new FillLayout());
    TabFolder tf = new TabFolder(s, SWT.BORDER);
    TabItem ti1 = new TabItem(tf, SWT.BORDER);
    ti1.setText("Option Group");
    ti1.setControl(new GroupExample(tf, SWT.SHADOW_ETCHED_IN));
    TabItem ti2 = new TabItem(tf, SWT.BORDER);
    ti2.setText("Grid");
    ti2.setControl(new GridComposite(tf));
    TabItem ti3 = new TabItem(tf, SWT.BORDER);
    ti3.setText("Text");
    Composite c1 = new Composite(tf, SWT.BORDER);
    c1.setLayout(new FillLayout());
    Text t = new Text(c1, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
    ti3.setControl(c1);
    TabItem ti4 = new TabItem(tf, SWT.BORDER);
    ti4.setText("Settings");
    Composite c2 = new Composite(tf, SWT.BORDER);
    c2.setLayout(new RowLayout());
    Text t2 = new Text(c2, SWT.BORDER | SWT.SINGLE | SWT.WRAP
        | SWT.V_SCROLL);
    Button b = new Button(c2, SWT.PUSH | SWT.BORDER);
    b.setText("Save");
    ti4.setControl(c2);
    s.open();
    while (!s.isDisposed()) {
      if (!d.readAndDispatch())
        d.sleep();
    }
    d.dispose();
  }
}
class GroupExample extends Composite {
  final Button b1;
  final Button b2;
  final Button b3;
  public GroupExample(Composite c, int style) {
    super(c, SWT.NO_BACKGROUND);
    this.setSize(110, 75);
    this.setLayout(new FillLayout());
    final Group g = new Group(this, style);
    g.setSize(110, 75);
    g.setText("Options Group");
    b1 = new Button(g, SWT.RADIO);
    b1.setBounds(10, 20, 75, 15);
    b1.setText("Option One");
    b2 = new Button(g, SWT.RADIO);
    b2.setBounds(10, 35, 75, 15);
    b2.setText("Option Two");
    b3 = new Button(g, SWT.RADIO);
    b3.setBounds(10, 50, 80, 15);
    b3.setText("Option Three");
  }
  public String getSelected() {
    if (b1.getSelection())
      return "Option One";
    if (b2.getSelection())
      return "Option Two";
    if (b3.getSelection())
      return "Option Three";
    return "None Selected";
  }
}
class GridComposite extends Composite {
  public GridComposite(Composite c) {
    super(c, SWT.BORDER);
    GridLayout gl = new GridLayout();
    gl.numColumns = 3;
    this.setLayout(gl);
    final Label l1 = new Label(this, SWT.BORDER);
    l1.setText("Column One");
    final Label l2 = new Label(this, SWT.BORDER);
    l2.setText("Column Two");
    final Label l3 = new Label(this, SWT.BORDER);
    l3.setText("Column Three");
    final Text t1 = new Text(this, SWT.SINGLE | SWT.BORDER);
    final Text t2 = new Text(this, SWT.SINGLE | SWT.BORDER);
    final Text t3 = new Text(this, SWT.SINGLE | SWT.BORDER);
    final Text t4 = new Text(this, SWT.SINGLE | SWT.BORDER);
    final Text t5 = new Text(this, SWT.SINGLE | SWT.BORDER);
    final Text t6 = new Text(this, SWT.SINGLE | SWT.BORDER);
    GridData gd = new GridData();
    gd.horizontalAlignment = GridData.CENTER;
    l1.setLayoutData(gd);
    gd = new GridData();
    gd.horizontalAlignment = GridData.CENTER;
    l2.setLayoutData(gd);
    gd = new GridData();
    gd.horizontalAlignment = GridData.CENTER;
    l3.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t1.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t2.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t3.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t4.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t5.setLayoutData(gd);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    t6.setLayoutData(gd);
  }
  public static void main(String[] argv) {
    new TabbedShellExample();
  }
}





TabFolder Example

/******************************************************************************
 * All Right Reserved. 
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * 
 * Created on 2004-4-9 14:11:34 by JACK
 * $Id$
 * 
 *****************************************************************************/
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
public class TabFolderExample {
  Display display = new Display();
  Shell shell = new Shell(display);
  
  Image icon = new Image(shell.getDisplay(), "jexp.gif");
  public TabFolderExample() {
    shell.setLayout(new FillLayout());
    
    final TabFolder tabFolder = new TabFolder(shell, SWT.BOTTOM);
    
    
    Button button = new Button(tabFolder, SWT.NULL);
    button.setText("This is a button.");
    
    TabItem tabItem1 = new TabItem(tabFolder, SWT.NULL);
    tabItem1.setText("item #1");
    tabItem1.setImage(icon);
    tabItem1.setControl(button);
    
    Text text = new Text(tabFolder, SWT.MULTI);
    text.setText("This is a text control.");
    
    TabItem tabItem2 = new TabItem(tabFolder, SWT.NULL);
    tabItem2.setText("item #2");
    tabItem2.setImage(icon);
    tabItem2.setControl(text);
    
    Label label = new Label(tabFolder, SWT.NULL);
    label.setText("This is a text lable.");
    
    TabItem tabItem3 = new TabItem(tabFolder, SWT.NULL);
    tabItem3.setText("item #3");
    tabItem3.setControl(label);
    
    tabFolder.addSelectionListener(new SelectionListener() {
      public void widgetSelected(SelectionEvent e) {
        System.out.println("Selected item index = " + tabFolder.getSelectionIndex());
        System.out.println("Selected item = " + (tabFolder.getSelection() == null ? "null" : tabFolder.getSelection()[0].toString()));
      }
      public void widgetDefaultSelected(SelectionEvent e) {
        widgetSelected(e);
      }
    });
    //tabFolder.setSelection(new TabItem[]{tabItem2, tabItem3});
    //tabFolder.setSelection(2);
    
    shell.setSize(400, 120);
    shell.open();
    //textUser.forceFocus();
    
    System.out.println(tabFolder.getSelectionIndex());
    // 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 TabFolderExample();
  }
}