我的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()
但无济于事。 HALP。
编辑:解决方案
我使用了错误的shell:
public void editFeature(){
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
PopUpEditForm p = new PopUpEditForm(activeShell);
}
}
答案 0 :(得分:1)
尝试以下方法:
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());
}
答案 1 :(得分:1)
我建议你使用:
public void editFeature()
{
Display disp = new Display();
Shell she = new Shell(disp);
PopUpEditForm p = new PopUpEditForm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
}
理想情况下,对话框应位于窗口上方。