SWT and Thread : Thread « SWT JFace Eclipse « Java






SWT and Thread

SWT and Thread

/******************************************************************************
 * Copyright (c) 1998, 2004 Jackwind Li Guojie
 * All right reserved. 
 * 
 * Created on Oct 26, 2003 2:45:03 PM by JACK
 * $Id: SyncExecExample.java,v 1.1 2003/12/22 12:07:54 jackwind Exp $
 * 
 * visit: http://www.asprise.com/swt
 *****************************************************************************/

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * syncExec Example. 
 */
public class SyncExecExample {

  public static void main(String[] args) {

    final Display display = new Display();
    Shell shell = new Shell(display);
    
    final Runnable print = new Runnable() {
      public void run() {
        System.out.println("Print from thread: \t" + Thread.currentThread().getName());
      }
    };
    
    final Thread applicationThread = new Thread("applicationThread") {
      public void run() {
        System.out.println("Hello from thread: \t" + Thread.currentThread().getName());
        display.syncExec(print);
        System.out.println("Bye from thread: \t" + Thread.currentThread().getName());
      }
    };
    
    shell.setText("syncExec Example");
    shell.setSize(300, 100);
    
    Button button = new Button(shell, SWT.CENTER);
    button.setText("Click to start");
    button.setBounds(shell.getClientArea());
    button.addSelectionListener(new SelectionListener() {
      public void widgetDefaultSelected(SelectionEvent e) {
      }
      public void widgetSelected(SelectionEvent e) {
        applicationThread.start();
      }
    });
    
    shell.open();    
    
    
    while(! shell.isDisposed()) {
      if(! display.readAndDispatch()) {// If no more entries in event queue
        display.sleep();
      }
    }
    
    display.dispose();
  
  }
}


           
       








Related examples in the same category

1.Illustrates multithread UI programming issuesIllustrates multithread UI programming issues