我创建了这个用户管理应用程序,并对其应用了一些样式。第一次查看时,我所有的窗口背景色看起来都很好,但是如果我使用“取消”按钮或其他方式将其关闭,然后重新打开它们,背景色就消失了。我认为这可能是由于关闭窗口的方式将设置为false所致,但这不是因为按钮和组仍保留其样式。谁能告诉我为什么会这样以及如何解决?如果我应该发布更多代码,请提出要求。谢谢!
我在此处分配样式:
@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%
}
答案 0 :(得分:2)
这对我有用:
在Application.e4xmi中,我有一个包含单个零件的窗口。 仅已关闭“要渲染”窗口。
显示窗口的处理程序执行以下操作:
@Execute
public void execute(final EModelService modelService, final MApplication app)
{
final var window = modelService.find("window-id", app);
window.setToBeRendered(true);
}
零件类具有:
@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 parent
的唯一子元素上设置CSS样式。
此代码适用于Java 10或更高版本(它使用var
),对于Java的早期版本,将需要进行一些小的更改。