2011-07-05 121 views
0

我在做一個使用GEF的項目。在畫布上雙擊模型時,我需要打開一個彈出窗口。GEF可以使用SWT窗口作爲彈出窗口嗎?

我創建了一個SWT窗口並讓GEF打開它。但問題是,它casue一個例外:

異常的線程「主題-5」 org.eclipse.swt.SWTException:未能執行的可運行(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窗口作爲彈出窗口還是有任何其他方式來做到這一點?

謝謝

回答

2

聽起來很奇怪,但我沒有GEF的經驗。據this SWT FAQ調用從非UI線程UI方法,嘗試用包裝代碼

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

您還可以使用asyncExec,根據您的需要..