gpt4 book ai didi

java - Vaadin 保存主题

转载 作者:行者123 更新时间:2023-12-02 02:09:56 26 4
gpt4 key购买 nike

在应用程序中,我想提供更改主题的可能性,但如果我刷新页面,它将返回到默认主题,我不知道如何为所有应用程序保存主题,有人可以帮助我吗?

import com.vaadin.ui.ComboBox;
import com.vaadin.ui.CustomComponent;


public class ThemeSelectorComboBox extends CustomComponent
{
private static final String SELECT_THEME = "Select theme:";
private final ComboBox<CustomTheme> comboBox = new ComboBox<>();

public ThemeSelectorComboBox()
{
init();
}

private void init()
{
comboBox.setCaption(SELECT_THEME);
comboBox.setItems(CustomTheme.values());
comboBox.setSelectedItem(CustomTheme.MATERIAL_DARK);
comboBox.addValueChangeListener(event -> flipTheme(event.getValue()));
setCompositionRoot(comboBox);

// Set the size as undefined at all levels
comboBox.setSizeUndefined();
setSizeUndefined();
}

private void flipTheme(CustomTheme theme)
{
if (theme != null)
{
getCompositionRoot().getUI().setTheme(theme.getThemeName());


}
}

}

最佳答案

默认情况下,Vaadin 在浏览器重新加载时执行 UI.init,从而重置主题。您基本上有两个选择:

  1. 将选定的主题存储在类变量中,并调用 setTheme在你的UI.init()如果已设置此变量。
  2. 使用@PreserveOnRefresh对 UI 类进行注释以自动维护完整的 UI 状态。在这种情况下使用此注释时,UI.init 仅在 session 启动时调用一次。

关于java - Vaadin 保存主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com