Vaadin 8 изменить глобальный шрифт программно
У меня есть окно пользовательских настроек, которое позволяет пользователю выбрать размер шрифта и при применении окна (с помощью кнопки щелчка) все компоненты в корневом пользовательском интерфейсе, и дети получают новый размер шрифта.
Я перепробовал все доступные решения для обработки глобальных изменений шрифтов с помощью файла scss. Однако изменяются только элементы непосредственно под корневым шрифтом пользовательского интерфейса, но дочерние элементы, такие как шрифт Tree Elements и Grid Row, остаются прежними.
Вот ссылка на аналогичный вопрос, который работает частично. https://vaadin.com/forum/thread/10962145
Решение 1. Используйте файл styles.scss для настройки, как показано ниже
@import "mytheme.scss";
@import "addons.scss";
@import "mythememedium.scss";
@import "mythemelarge.scss";
.mytheme {
@include addons;
@include mytheme;
}
.mytheme-small{
$v-font-size: 13px;
@include mytheme;
}
.mytheme-medium{
$v-font-size: 16px;
@include mythememedium;
}
.mytheme-large{
$v-font-size: 17px;
@include addons;
@include mythemelarge;
}
UserPreferenceWindow.java
apply.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
String fontSize = (String) fontSizeCmb.getValue();
String styleName = UI.getCurrent().getStyleName();
if (fontSize.equals("MEDIUM")) {
UI.getCurrent().addStyleName("abstheme-medium");
UI.getCurrent().removeStyleName(styleName);
} else if (fontSize.equals("LARGE")) {
UI.getCurrent().addStyleName("abstheme-large");
UI.getCurrent().removeStyleName(styleName);
} else {
UI.getCurrent().addStyleName("abstheme-small");
UI.getCurrent().removeStyleName(styleName);
}
}
});
mythemelarge.scss
.v-tree8 {
.v-tree8-scroller, .v-tree8-scroller-horizontal { }
.v-tree8-tablewrapper {
.v-tree8-body {
.v-tree8-row,
.v-tree8-stripe,
.v-tree8-row-focused,
.v-tree8-row-has-data {
.v-tree8-expander, expanded {}
.v-tree8-cell-content {font-size: 17px; color: black !important;}
}
}
}
}
}
.mygrid .v-grid-body .v-grid-cell {
font-size: 17px; // adjust to your needs
}
Любые указатели о том, как справиться с этим??
ТИА.