我在Eclipse RCP视图中有一个按钮,该按钮使带有窗体的TitleAreaDialog弹出窗口。但是,当我单击该按钮时,TitleAreaDialog会弹出来显示在我的视图后面,而不是在它的前面,以引起用户的注意。

这是我的对话框的声明方式:

public class PopUpEditForm extends TitleAreaDialog {
    public PopUpEditForm(Shell parentShell) {
        super(parentShell);
        //Irrelevant logic
    }
//Other functions to populate/create the form
}


这就是所谓的:

public void editFeature(){
    Display disp = new Display();
    Shell she = new Shell(disp);
    PopUpEditForm p = new PopUpEditForm(she);
}


我尝试为用于显示表单的容器以及该容器的组件设置焦点(.setFocus())。我也使用.forceActive(),但无济于事。快点

编辑:解决方案

我使用了错误的外壳:

public void editFeature(){
    PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {

    public void run() {
            Shell activeShell =     PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
            PopUpEditForm p = new PopUpEditForm(activeShell);
    }
}

最佳答案

我建议您使用:

    public void editFeature()
    {
Display disp = new Display();
Shell she = new Shell(disp);
PopUpEditForm p = new PopUpEditForm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
    }


理想情况下,对话框应位于窗口上方。

08-27 14:57