我正在使用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窗口用作弹出窗口,还是有其他方法可以做到这一点?
谢谢
答案 0 :(得分:2)
听起来很奇怪,但我没有GEF的经验。根据{{3}},您从非UI线程调用UI方法,尝试使用
包装代码display.syncExec(
new Runnable() {
public void run(){
... // your code
}
});
您也可以根据需要使用asyncExec ..