如何将焦点放在 Eclipse RCP TitleAreaDialog 上?
How to give focus to Eclipse RCP TitleAreaDialog?
我的 Eclipse RCP View 中有一个按钮,可以生成一个带有表单的 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()
但无济于事。哈尔普
编辑:解决方案
我用错了shell:
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(){
PopUpEditForm p = new PopUpEditForm(Display.getDefault().getActiveShell());
}
因为 PopUpEditForm
是一个 TitleAreaDialog
,它需要一个父 shell,你不应该为它创建一个新的 shell,而是传递一个现有的 shell(就像主应用程序 shell)。
由于您处于 RCP 视图中,您还可以:
public void editFeature(){
PopUpEditForm p = new PopUpEditForm(getSite().getShell());
}
我建议你使用:
public void editFeature()
{
Display disp = new Display();
Shell she = new Shell(disp);
PopUpEditForm p = new PopUpEditForm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
}
理想情况下,对话框应位于 window.
上方
我的 Eclipse RCP View 中有一个按钮,可以生成一个带有表单的 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()
但无济于事。哈尔普
编辑:解决方案
我用错了shell:
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(){
PopUpEditForm p = new PopUpEditForm(Display.getDefault().getActiveShell());
}
因为 PopUpEditForm
是一个 TitleAreaDialog
,它需要一个父 shell,你不应该为它创建一个新的 shell,而是传递一个现有的 shell(就像主应用程序 shell)。
由于您处于 RCP 视图中,您还可以:
public void editFeature(){
PopUpEditForm p = new PopUpEditForm(getSite().getShell());
}
我建议你使用:
public void editFeature()
{
Display disp = new Display();
Shell she = new Shell(disp);
PopUpEditForm p = new PopUpEditForm(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell());
}
理想情况下,对话框应位于 window.
上方