Non valide Thread Erreur d'Accès avec Java SWT

J'ai un simple Java SWT application en Java jusqu'à présent, mais la chose étrange est lorsque j'essaie de lancer un messagebox/boîte d'alerte lors de l'écoute d'un événement déclenché par l'un de mes cours, j'obtiens un message d'erreur disant "non Valide fil de l'accès".

Ma classe de l'événement est déclenché et entendu par la classe principale, mais c'est quand il a pour afficher la MessageBox que le "non Valide fil de l'accès" erreur apparaît. Je suis en train d'essayer de montrer la MessageBox dans une fonction qui se composent de tous les autres codes qui permettront de créer les Interfaces graphiques SWT. C'est la façon dont la fonction ressemble à:

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

Ce sont les fonctions auxiliaires ensemble dans la classe.

<!-- language: lang-java -->
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();
        }
    }
}

L'erreur trace de la pile est comme suit:

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)

Toute aide sera grande.
Merci!

InformationsquelleAutor Carven | 2011-05-12