GEF可以使用SWT Window作为弹出窗口吗?

时间:2011-07-05 17:16:40

标签: swt eclipse-gef

我正在使用GEF做一个项目。双击画布中的模型时,我需要打开一个弹出窗口。

我创建一个SWT窗口并让GEF打开它。但问题在于它是一个例外:

线程“Thread-5”中的异常org.eclipse.swt.SWTException:无法执行runnable(org.eclipse.swt.SWTException:无效的线程访问)

运行以下代码时

     while(!shell.isDisposed()){ 
        **if(!display.readAndDispatch()){** 
        display.sleep(); 
        }
        }

我在我的项目中做的是创建SWT窗口,然后创建一个线程来运行它,并在我的模型的editpart中调用线程,如下所示:

public void performRequest(Request req)
{
            swtthread aa = new swtthread();
            aa.start();
    }

GEF是否可以将SWT窗口用作弹出窗口,还是有其他方法可以做到这一点?

谢谢

1 个答案:

答案 0 :(得分:2)

听起来很奇怪,但我没有GEF的经验。根据{{​​3}},您从非UI线程调用UI方法,尝试使用

包装代码
display.syncExec(
  new Runnable() {
    public void run(){
      ... // your code
  }
});

您也可以根据需要使用asyncExec ..