Java/SWT JFace Eclipse/Tab

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

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

   <source lang="java">

/*

* 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();
 }

}

      </source>
   
  
 
  



Creates a tabbed display with a single tab

   <source lang="java">

//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();
 }

}


      </source>
   
  
 
  



Creates a tabbed display with four tabs and a few controls

   <source lang="java">

//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();
 }

}


      </source>
   
  
 
  



Demonstrates CTabFolder

   <source lang="java">

//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();
 }

}


      </source>
   
  
 
  



implement tab traversal (behave like a tab group)

   <source lang="java">

/*

* 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();
 }

}

      </source>
   
  
 
  



Prevent an item from closing

   <source lang="java">

/*

* 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();
 }

}

      </source>
   
  
 
  



Prevent Tab from traversing out of a control

   <source lang="java">

/*

* 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 ();

} }


      </source>
   
  
 
  



Set the tab traversal order of children

   <source lang="java">

/*

* 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();
 }

}


      </source>
   
  
 
  



SWT Tab Control

   <source lang="java">

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();
 }

}


      </source>
   
  
 
  



Tabbed Example

   <source lang="java">

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();
 }

}

      </source>
   
  
 
  



TabFolder Example

   <source lang="java">

/******************************************************************************

* 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();
 }

}

      </source>