Java tutorial
//Send questions, comments, bug reports, etc. to the authors: //Rob Warner (rwarner@interspatial.com) //Robert Harris (rbrt_harris@yahoo.com) 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(); } }