如果「主題」你的意思是造型,正確的做法是不是爲每個主題一個單獨的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