爲了打開一個模態對話框,你需要傳遞一個父窗口,並將對話框的必要標誌傳遞給模態。如何讓工作臺窗口在基於Eclipse的項目中打開模態對話框?
根據您在eclipse基礎架構中的位置,找到此父窗口並不總是那麼容易。
如何訪問父窗口?
爲了打開一個模態對話框,你需要傳遞一個父窗口,並將對話框的必要標誌傳遞給模態。如何讓工作臺窗口在基於Eclipse的項目中打開模態對話框?
根據您在eclipse基礎架構中的位置,找到此父窗口並不總是那麼容易。
如何訪問父窗口?
從視圖或編輯器(這一部分是很容易):
this.getSite().getWorkbenchWindow().getShell()
從別處,訪問視圖或編輯器和上述相同。
如果您發現自己處於一個無法訪問視圖或編輯器的類中,您可能不想調用任何UI代碼,但是如果您真的想在腳下拍攝自己:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
不太正是你想做的事,但你可能需要使用SWT.APPLICATION_MODAL,SWT.DIALOG_TRIM等,以使其成爲一個模式對話框(但也許這不是創建對話框時你的問題是什麼)。
有關更多信息,請參閱此link。
上一個答案中的一段代碼將起作用。但是,請記住,只能從UI線程打開對話框。如果您從另一個線程打開對話框,例如一個後臺進程,你需要這樣做:
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
否則你會在創建對話框時得到一個異常。
是的,也是。但我的問題更具體地是關於找到工作臺窗口的外殼。我做了6個月前,並在此期間忘記所以我想增加知識的titbit到stackoverflow – Tirno 2009-01-14 15:38:53
@Tirno - 我最有回報的StackOverflow答案只是我自己寫的筆記,我知道我會找到通過谷歌幾個月或幾年後,當我再次有完全相同的問題。 – ArtOfWarfare 2016-09-16 17:53:57