Eclipse rcp RCP4窗口在关闭和重新打开时会丢失其背景色

Eclipse rcp RCP4窗口在关闭和重新打开时会丢失其背景色,eclipse-rcp,rcp,e4,Eclipse Rcp,Rcp,E4,我创建了这个用户管理应用程序,并对其应用了一些样式。第一次查看时,我所有的windows背景色都显示得很好,但是如果我使用“取消”按钮或其他方式关闭它们,然后重新打开它们,背景色就会消失。我认为这可能是因为我关闭窗口的方式将渲染设置为false,但这不可能是因为按钮和组仍保留其样式。有人能告诉我为什么会发生这种情况,以及如何解决它吗?如果我应该张贴任何更多的代码,请这样要求。谢谢 我在此处指定样式: @PostConstruct 构造后的公共void(复合父级) { setData(“org.

我创建了这个用户管理应用程序,并对其应用了一些样式。第一次查看时,我所有的windows背景色都显示得很好,但是如果我使用“取消”按钮或其他方式关闭它们,然后重新打开它们,背景色就会消失。我认为这可能是因为我关闭窗口的方式将渲染设置为false,但这不可能是因为按钮和组仍保留其样式。有人能告诉我为什么会发生这种情况,以及如何解决它吗?如果我应该张贴任何更多的代码,请这样要求。谢谢

我在此处指定样式:

@PostConstruct
构造后的公共void(复合父级)
{
setData(“org.eclipse.e4.ui.cscsclassname”、“ColorGrad”);
RoleController RoleController=新RoleController();
parent.getShell().setBounds(0,0380435);
parent.setLayout(空);
......
取消按钮功能,如果确实与此有关:

btnCancel=新建按钮(父级,SWT.NONE);
btnCancel.立根(185354160,36);
btnCancel.setText(“取消”);
setData(“org.eclipse.e4.ui.css.cscsclassname”,“橙色”);
btnCancel.addSelectionListener(新建SelectionListener(){
公共无效widgetDefaultSelected(SelectionEvent e){
}
公共无效WidgeSelected(SelectionEvent e){
modelService.find(“ats_usermanagement_rcp.part.UserAddDialog”,application).setToBerndered(false);
modelService.find(“ats_usermanagement_rcp.dialog.UserAdmin”,application).setToBerndered(false);
}
});
CSS:

.ColorGrad
{
swt背景模式:默认;
背景色:#697d87#ff4612#697d87#697d87#ff4612 60%90%95%100%
}
这对我很有用:

在Application.e4xmi中,我有一个包含单个零件的窗口。该窗口必须关闭“待渲染”

显示窗口的处理程序执行以下操作:

@Execute
public void execute(最终EModelService modelService、最终MapApplication应用程序)
{
最终var窗口=modelService.find(“窗口id”,应用程序);
window.setToBerndered(true);
}
零件类有:

@PostConstruct
public void postConstruct(最终复合父级、最终EModelService modelService、最终MApplication应用程序)
{
最终var组合=新组合(母公司,SWT.None);
组件设置布局(新的GridLayout());
comp.setData(“org.eclipse.e4.ui.css.cscsclassname”,“css类名”);
最终var关闭=新按钮(组件、开关按下);
close.setText(“close”);
close.addListener(SWT.Selection,事件->
{
final var window=modelService.find((“window id”,app);
window.setToBernedered(false);
});
}
这是在组合上设置CSS样式,该组合是父级的唯一子级


此代码适用于Java10或更高版本(它使用
var
)对于早期版本的Java,需要进行一些小的更改。

重新打开窗口时是否调用@PostConstruct?我一直假设在重新渲染时会调用它。不要假设,请执行一些测试并确定是否在重新打开时调用它。这可能是因为设置了CSS样式数据(和布局)在父复合上-该复合不属于您的代码,您不应更改布局或在其上设置数据。创建您自己的复合作为父复合的唯一子项,并在其上设置值。当再次呈现@PostConstruct时,如何调用它?抱歉,这对rcp来说仍然是新的。