2009-01-14 32 views

回答

20

從視圖或編輯器(這一部分是很容易):

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

從別處,訪問視圖或編輯器和上述相同。

如果您發現自己處於一個無法訪問視圖或編輯器的類中,您可能不想調用任何UI代碼,但是如果您真的想在腳下拍攝自己:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell() 
0

不太正是你想做的事,但你可能需要使用SWT.APPLICATION_MODALSWT.DIALOG_TRIM等,以使其成爲一個模式對話框(但也許這不是創建對話框時你的問題是什麼)。

有關更多信息,請參閱此link

+0

是的,也是。但我的問題更具體地是關於找到工作臺窗口的外殼。我做了6個月前,並在此期間忘記所以我想增加知識的titbit到stackoverflow – Tirno 2009-01-14 15:38:53

+0

@Tirno - 我最有回報的StackOverflow答案只是我自己寫的筆記,我知道我會找到通過谷歌幾個月或幾年後,當我再次有完全相同的問題。 – ArtOfWarfare 2016-09-16 17:53:57

27

上一個答案中的一段代碼將起作用。但是,請記住,只能從UI線程打開對話框。如果您從另一個線程打開對話框,例如一個後臺進程,你需要這樣做:

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

否則你會在創建對話框時得到一個異常。

相關問題