【问题标题】:How to give focus to Eclipse RCP TitleAreaDialog?如何关注 Eclipse RCP TitleAreaDialog?
【发布时间】:2016-03-03 02:50:35
【问题描述】:

我在我的 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);
    }        
}

【问题讨论】:

    标签: java eclipse dialog eclipse-rcp rcp


    【解决方案1】:

    我建议你使用:

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

    理想情况下,对话框应该在窗口上方。

    【讨论】:

    • 我知道我使用了错误的 shell,但不知道如何获取活动的 shell。谢谢,这行得通。
    • 对不起,我忘了提到删除行 Display disp = new Display(); Shell she = new Shell(disp);
    【解决方案2】:

    尝试以下方法:

    public void editFeature(){
        PopUpEditForm p = new PopUpEditForm(Display.getDefault().getActiveShell());
    }
    

    由于PopUpEditForm 是需要父shell 的TitleAreaDialog,因此您不必为其创建新的shell,而是传递现有的shell(如主应用程序shell)。

    由于您处于 RCP 视图中,因此您也可以这样做:

    public void editFeature(){
        PopUpEditForm p = new PopUpEditForm(getSite().getShell());
    }
    

    【讨论】:

      猜你喜欢
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 2011-04-29
      • 2013-01-18
      • 1970-01-01
      相关资源
      最近更新 更多