Java tutorial
import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class AsyncExecDisplay { static Display display = new Display(); public static void main(String[] args) { Shell shell = new Shell(display); shell.setLayout(new FillLayout()); final Button buttonAsyncExec = new Button(shell, SWT.PUSH); buttonAsyncExec.setText("start"); buttonAsyncExec.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { buttonAsyncExec.setText("Calculation in progress ..."); getTask2(buttonAsyncExec).start(); } }); shell.open(); while (!shell.isDisposed()) { // Event loop. if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } public static Thread getTask2(Button button) { final Button theButton = button; return new Thread() { public void run() { try { Thread.sleep(6000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } display.asyncExec(new Runnable() { public void run() { theButton.setText("done"); } }); } }; } }