2013-09-21 117 views
1

我有一個自定義的JFace對話框(稱爲PropertyDialog),它擴展了FormDialog。我想在打開PropertyryDialog時立即打開一個模態消息對話框,向用戶顯示消息。在另一個模態JFace對話框上打開模態JFace對話框

這怎麼可能完成?我必須重寫open()方法嗎?請注意,要求PropertyDialog.open()在按鈕欄上按下按鈕之前不會返回。

感謝您的幫助。

+0

您可以使用'TitleAreaDialog',在對話框的頂部有一個錯誤消息的空間,因此您不需要另一個對話框。 –

+0

@ greg-449感謝您的建議!不幸的是,我無法控制屬性對話框擴展的類型,因爲它不直接擴展它,而是通過一系列其他類提供一些額外的功能。 此外,它已經在這個層次結構鏈中擴展了'FormDialog',所以將它改爲'TitleAreaDialog'是不可能的。因此,我想打開一個'MessageDialog'。 – Jayant

回答

3

您可以通過在createContents方法的末尾顯示消息,這樣做:

@Override 
    protected Control createContents(final Composite parent) 
    { 
    final Control control = super.createContents(parent); 

    parent.getDisplay().asyncExec(new Runnable() { 
     public void run() 
     { 
     MessageDialog.openInformation(getShell(), "title", "message"); 
     } 
    }); 

    return control; 
    } 

您需要使用Display.asyncExec,這樣直到已經顯示父對話框不顯示對話框。

+0

真棒回覆!我從來不知道!這正是我所期待的!非常感謝您的幫助! – Jayant