【问题标题】:Can GEF use SWT Window as a popup window?GEF 可以使用 SWT Window 作为弹出窗口吗?
【发布时间】:2011-07-05 17:16:39
【问题描述】:

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

我创建了一个 SWT 窗口并让 GEF 打开它。但问题是它会引发异常:

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

运行以下代码时。

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

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

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

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

谢谢

【问题讨论】:

    标签: swt eclipse-gef


    【解决方案1】:

    听起来很奇怪,但我没有使用 GEF 的经验。根据this SWT FAQ你从非UI线程调用UI方法,尝试用

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

    你也可以使用 asyncExec,这取决于你的需要..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2012-09-19
      相关资源
      最近更新 更多