RCP4 Window 在关闭和重新打开时失去背景颜色

RCP4 Window loses its background color when closed and re-opened

我创建了这个用户管理应用程序并对其应用了一些样式。我所有的 windows 背景颜色在第一次查看时都很好,但如果我使用取消按钮或其他方式关闭它们然后重新打开它们,背景颜色就消失了。我认为这可能是由于我关闭 windows 设置的方式导致呈现为 false,但这不可能是因为按钮和组仍保留其样式。谁能告诉我为什么会这样以及如何解决?如果我需要 post 更多代码,请提出要求。谢谢!

我在这里指定样式:

@PostConstruct
public void postConstruct(Composite parent) 
{
    parent.setData("org.eclipse.e4.ui.css.CssClassName", "ColorGrad");

    RoleController roleController = new RoleController();
    parent.getShell().setBounds(0, 0, 380, 435);

    parent.setLayout(null);
    ......

取消按钮功能如果确实与它有某种关系:

btnCancel = new Button(parent, SWT.NONE);
btnCancel.setBounds(185, 354, 160, 36);
btnCancel.setText("Cancel");
btnCancel.setData("org.eclipse.e4.ui.css.CssClassName", "orange");
btnCancel.addSelectionListener(new SelectionListener( ) {
    public void widgetDefaultSelected(SelectionEvent e) {
    }

    public void widgetSelected(SelectionEvent e) {
        modelService.find("ats_usermanagement_rcp.part.UserAddDialog", application).setToBeRendered(false);
        modelService.find("ats_usermanagement_rcp.dialog.UserAdmin", application).setToBeRendered(false);
    }
});

CSS:

.ColorGrad
{
    swt-background-mode: default;
    background-color: #697d87 #ff4612 #697d87 #697d87 #ff4612 60% 90% 95% 100%  
}

这对我有用:

在 Application.e4xmi 中,我有一个包含单个部分的 Window。 只有 Window 关闭了 'to be rendered'。

显示 Window 的处理程序:

@Execute
public void execute(final EModelService modelService, final MApplication app)
{
  final var window = modelService.find("window-id", app);

  window.setToBeRendered(true);
}

class部分有:

@PostConstruct
public void postConstruct(final Composite parent, final EModelService modelService, final MApplication app)
{
  final var comp = new Composite(parent, SWT.None);
  comp.setLayout(new GridLayout());

  comp.setData("org.eclipse.e4.ui.css.CssClassName", "css-class-name");

  final var close = new Button(comp, SWT.PUSH);
  close.setText("Close");
  close.addListener(SWT.Selection, event ->
    {
      final var window = modelService.find(("window-id", app);

      window.setToBeRendered(false);
    });
}

这是在 Composite 上设置 CSS 样式,它是 parent 的唯一子项。

此代码适用于 Java 10 或更高版本(它使用 var)它需要对 Java.

的早期版本进行小的改动