Окно RCP4 теряет цвет фона при закрытии и повторном открытии
Я создал это приложение для управления пользователями и применил к нему некоторые стили. Все цвета фона моих окон выглядят нормально при первом просмотре, но если я закрою их с помощью кнопки отмены или иным образом, а затем снова открою их, цвет фона просто исчезнет. Я подумал, что это может быть связано с тем, как я закрываю окна, устанавливая для отображения значение 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%
}
1 ответ
Это работает для меня:
В 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);
});
}
Это установка стиля CSS для Composite, который является единственным потомком parent
,
Этот код для Java 10 или более поздней версии (он использует var
) для более ранних версий Java потребуются небольшие изменения.