Eclipse rcp 激活部件后,立即在eclipse e4 RCP应用程序的屏幕上居中显示对话框

Eclipse rcp 激活部件后,立即在eclipse e4 RCP应用程序的屏幕上居中显示对话框,eclipse-rcp,jface,e4,Eclipse Rcp,Jface,E4,当Eclipse RCP应用程序中的左侧部分被激活时,我正在打开一个对话框。 在Part的@PostConstruct方法中,我将IPartListner注册到EPartService。 以下代码显示: partService.addPartListener(新的IPartListener(){ @凌驾 已激活公共无效部分(MPart部分){ if(part.getElementId().equals(“left_part_id”)){ SignInDialog dialog=新的SignInD

当Eclipse RCP应用程序中的左侧部分被激活时,我正在打开一个对话框。 在Part的@PostConstruct方法中,我将IPartListner注册到EPartService。 以下代码显示:

partService.addPartListener(新的IPartListener(){
@凌驾
已激活公共无效部分(MPart部分){
if(part.getElementId().equals(“left_part_id”)){
SignInDialog dialog=新的SignInDialog(shell、display、eventBroker);
dialog.open();
}
}
});
在扩展JFace对话框的SignInDialog中,我这样做:

@覆盖
受保护的void configureShell(Shell newShell){
Monitor=display.getPrimaryMonitor();
矩形monitorRect=monitor.getBounds();
int x=监视器rect.x+(监视器rect.width-600)/2;
int y=监视器ECT.y+(监视器ECT.height-360)/2;
设置位置(x,y);
newShell.setText(“登录”);
super.configureShell(newShell);
}
@凌驾
受保护点getInitialSize(){
返回新点(600360);
}

请注意,左侧部分始终可见,并通过Application.e4xmi绑定。我的问题是,一旦零件被激活,对话框就会显示在监视器的右下角。如果通过单击按钮打开同一对话框,它将正确显示在中心。任何帮助都将不胜感激,提前感谢

使用
getInitialLocation
方法设置对话框的位置。
configureShell
中设置的大小将被默认的
getInitialLocation

@覆盖
受保护点getInitialLocation(最终点initialSize)
{
Display Display=getShell().getDisplay();
Monitor=display.getPrimaryMonitor();
矩形monitorRect=monitor.getBounds();
int x=监视器rect.x+(监视器rect.width-600)/2;
int y=监视器ECT.y+(监视器ECT.height-360)/2;
返回新点(x,y);
}

使用
getInitialLocation
方法设置对话框的位置。
configureShell
中设置的大小将被默认的
getInitialLocation

@覆盖
受保护点getInitialLocation(最终点initialSize)
{
Display Display=getShell().getDisplay();
Monitor=display.getPrimaryMonitor();
矩形monitorRect=monitor.getBounds();
int x=监视器rect.x+(监视器rect.width-600)/2;
int y=监视器ECT.y+(监视器ECT.height-360)/2;
返回新点(x,y);
}

使用
getInitialLocation
方法设置对话框的位置。
configureShell
中设置的大小将被默认的
getInitialLocation

@覆盖
受保护点getInitialLocation(最终点initialSize)
{
Display Display=getShell().getDisplay();
Monitor=display.getPrimaryMonitor();
矩形monitorRect=monitor.getBounds();
int x=监视器rect.x+(监视器rect.width-600)/2;
int y=监视器ECT.y+(监视器ECT.height-360)/2;
返回新点(x,y);
}

使用
getInitialLocation
方法设置对话框的位置。
configureShell
中设置的大小将被默认的
getInitialLocation

@覆盖
受保护点getInitialLocation(最终点initialSize)
{
Display Display=getShell().getDisplay();
Monitor=display.getPrimaryMonitor();
矩形monitorRect=monitor.getBounds();
int x=监视器rect.x+(监视器rect.width-600)/2;
int y=监视器ECT.y+(监视器ECT.height-360)/2;
返回新点(x,y);
}