通过按钮Codename One切换主题

时间:2018-04-05 16:08:42

标签: java codenameone

当我改变主题时,我遇到了问题,我有一个默认主题和一个名为Blue的主题,我按下按钮变为蓝色然后它工作正常,直到我回到我的主菜单然后它变回我的默认主题是覆盖我的蓝色主题。我想避免它。

这是我的initVars:

CompletableFuture

这是我执行更改的按钮:

protected void initVars(Resources res){
    Toolbar.setOnTopSideMenu(false);
}

这是我的按钮功能,可以回到我的主菜单:

@Override
protected void onMain_Button4Action(Component c, ActionEvent event) {
     UIManager.initNamedTheme("/theme", "Blue");
     Display.getInstance().getCurrent().refreshTheme();
}

我应该在initVars或ActionListener中设置一些内容以避免覆盖吗?

1 个答案:

答案 0 :(得分:1)

我建议盯着一个新项目。您正在使用不推荐使用的旧GUI构建器。

假设两个主题都在主res文件中,您不需要这样做。您只需要引用资源文件,您可以使用fetchResourceFile()在旧的GUI构建器中获取该文件。

Hashtable themeData = theme.getTheme("Theme Name");
UIManager.getInstance().setThemeProps(themeData);
Display.getInstance().getCurrent().refreshTheme();