2013-09-21 116 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