title: Invalid Thread Access Error with Java SWT
body: <p>I have a simple Java SWT app in Java so far but the weird thing is when I try to launch a messagebox/alert box upon listening to an event fired by one of my own classes, I get an error saying "Invalid thread access". </p>
  
  <p>My class event is fired and heard by the main class but it is when it has to show the MessageBox that the "Invalid thread access" error appear. I am trying to show the MessageBox in a function that consist of all the other codes that will create the SWT GUIs. This is how the function looks like: </p>
  
  <pre><code>public void createContents() {
      Shell shell = new Shell();
      //.....all the SWT GUI codes....
      MessageBox msg = new MessageBox(shell, SWT.OK);
      myClass.addEventListener(new MyClassEventClassListener() {
          @Override
          public void myClassEventHandler(MyClassEvent e) {
              msg.setText("Hello");
              msg.setMessage("Event fired!");
              int result = msg.open();
          }
      });
  }
  </code></pre>
  
  <p>These are the auxiliary functions together in the class.</p>
  
  <pre><code>&lt;!-- language: lang-java --&gt;
  protected static Shell shell;
  public static void main(String[] args) {
      MyClass new myClass = new MyClass();
  
      try {
          SWTApp window = new SWTApp();
          window.open();
      } catch (Exception e) {     
  }
  
  public void open() {
      Display display = Display.getDefault();
      createContents();
      shell.open();
      shell.layout();
      while (!shell.isDisposed()) {
          if (!display.readAndDispatch()) {
              display.sleep();
          }
      }
  }
  </code></pre>
  
  <p>The error stack trace is as follows:</p>
  
  <pre><code>Exception in thread "AWT-EventQueue-0" org.eclipse.swt.SWTException: Invalid thread access
      at org.eclipse.swt.SWT.error(SWT.java:4083)
      at org.eclipse.swt.SWT.error(SWT.java:3998)
      at org.eclipse.swt.SWT.error(SWT.java:3969)
      at org.eclipse.swt.widgets.Display.error(Display.java:1249)
      at org.eclipse.swt.widgets.Display.checkDevice(Display.java:755)
      at org.eclipse.swt.widgets.Display.getShells(Display.java:2171)
      at org.eclipse.swt.widgets.Display.setModalDialog(Display.java:4463)
      at org.eclipse.swt.widgets.MessageBox.open(MessageBox.java:200)
  </code></pre>
  
  <p>Any help will be great.
  Thanks!</p>