20

モーダル ダイアログを開くには、親ウィンドウを渡し、ダイアログをモーダルにするために必要なフラグを渡す必要があります。

Eclipse インフラストラクチャーのどこにいるかによっては、この親ウィンドウを見つけるのは必ずしも容易ではありません。

親ウィンドウにはどのようにアクセスできますか?

4

3 に答える 3

30

前の回答のコードが機能します。ただし、UI スレッドからしかダイアログを開くことができないことに注意してください。バックグラウンド プロセスなどの別のスレッドからダイアログを開く場合は、次のようにする必要があります。

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
    public void run() {
        Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
    }
});

そうしないと、ダイアログの作成時に例外が発生します。

于 2009-01-14T17:07:25.627 に答える
25

ビューまたはエディターから (この部分は簡単です):

this.getSite().getWorkbenchWindow().getShell()

他の場所から、ビューまたはエディターにアクセスし、上記と同じです。

ビューやエディターにアクセスできないクラスにいることに気付いた場合、UI コードを呼び出したくないかもしれませんが、本当に自分自身を撃ちたい場合は、次のようにします。

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
于 2009-01-14T15:00:18.567 に答える
0

やりたいことは正確ではありませんが、ダイアログをモーダルダイアログにするために、ダイアログを作成するときにSWT.APPLICATION_MODALSWT.DIALOG_TRIMなどを使用する必要がある場合があります(ただし、おそらくそれはあなたの質問の内容ではありません)。

詳細については、このリンクを参照してください。

于 2009-01-14T15:27:25.207 に答える