0

私はGEFを使用してプロジェクトを行っています。キャンバスでモデルをダブルクリックしたときにポップアップ ウィンドウを開く必要があります。

SWT ウィンドウを作成し、GEF に開いてもらいます。しかし、問題はそれが例外を引き起こすことです:

スレッド "Thread-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 ウィンドウをポップアップ ウィンドウとして使用できる可能性はありますか、またはこれを行う他の方法はありますか?

ありがとうございました

4

1 に答える 1

2

奇妙に聞こえるかもしれませんが、GEF の経験はありません。この SWT FAQによると、非 UI スレッドから UI メソッドを呼び出し、コードをラップしてみてください

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

必要に応じて、asyncExec を使用することもできます。

于 2011-07-06T07:06:35.710 に答える