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.
的早期版本进行小的改动
我创建了这个用户管理应用程序并对其应用了一些样式。我所有的 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.