java - 通过代号一按钮切换主题

标签 java codenameone

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

这是我的初始化变量:

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();
}

这是我返回主菜单的按钮功能:

back.addActionListener(new ActionListener() 
        {
            public void actionPerformed(ActionEvent ev) 
            {
                new StateMachine("/theme");
            }
        });

我应该在 initVars 还是在我的 ActionListener 中设置一些东西以避免覆盖?

最佳答案

我建议开始一个新项目。您正在使用已弃用的旧 GUI 生成器。

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

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

关于java - 通过代号一按钮切换主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49676891/

相关文章:

java - 尝试使用 Java.swing 创建一个 MenuBar,并创建一个 JMenu() 对象,但它不允许我将其添加到框架中,不知道为什么?

java - 简单的Java并发线程——捕获开始和结束

java - 如何在代号one中获取手机信息?

class - 代号一图形调用方法

java - 如何防止 CodenameOne GUI 元素在更改为粗体时滚动(滴答作响?)?

java - 关于 CodeName One 和 Path Java Runtime 的问题

java - 小便器算法 - 一个简单的优化

java - 尝试将消息推送到 Activemq 时出现 NamingException

javax.管理.InstanceNotFoundException : Catalina:type=Server occurs when I run debug using Tomcat7 in IntelliJ IDEA

android - 代号一在 Android 上发送短信