如果“主题”你的意思是造型,正确的做法是不是为每个主题一个单独的jar,而是改用CSS。
答:如果您使用CSSResource,您可以使用条件CSS:
https://developers.google.com/web-toolkit/doc/latest/DevGuideClientBundle#Conditional_CSS
B.如果你使用的不是
.headerPanel {
background: blue;
}
外部CSS文件,你可以指定一个不同选择基于主题背景:
.orangeTheme .headerPanel {
background: orange;
}
.blueTheme .headerPanel {
background: blue;
}
注您的代码(或Ui:Binder)应该只将类“headerPanel”分配给小部件。当你启动你的应用程序时,你将一个默认主题分配给你最外面的小部件(你添加到RootPanel的那个小部件)。例如,你设置了
myAppPanel.addStyleName("blueTheme");
这将给所有带有“headerPanel”类的小部件一个蓝色的背景。当用户选择不同的主题时,可以移除“blueTheme”类并添加“orangeTheme”类。它会自动刷新页面(无需重新加载),所有样式都会改变。
编辑:
如果你需要一个主题应用到整个应用程序,包括PopupPanel和对话框,使用此代码以应用主题:
Document.get().getBody().setClassName("blueTheme");
看看这个:HTTP: //stackoverflow.com/questions/5603880/themechanger-in-gwt-ext – RAS
这个问题是关闭的错误。建议的副本处理不同的框架 - GWT-Ext。 –
@AndreiVolgin GWT-Ext框架仅用于采用用户输入来选择主题。主动逻辑“动态主题更改”仅使用GWT完成。 – RAS