2011-04-09 32 views
2

我正在使用GWT 2.0,GWT-Ext 1.5 & Java 1.6和Mozilla 3.6.x.GWT-Ext中的ThemeChanger

我想按照這link實現ThemeChanger模塊。但我無法實現它。任何人都可以看我的代碼&告訴我我錯過了什麼或做錯了什麼?

的test.html

<!doctype html> 
<html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 

    <link type="text/css" rel="stylesheet" href="ThemeTest.css"> 
    <link id="theme" rel="stylesheet" type="text/css" href="/public/resources/themes/green/css/xtheme-green.css"/> 
    <link id="theme" rel="stylesheet" type="text/css" href="/public/resources/themes/red/css/xtheme-red.css"/> 
    <link id="theme" rel="stylesheet" type="text/css" href="/public/resources/themes/gray/css/xtheme-gray.css"/> 
    <link id="theme" rel="stylesheet" type="text/css" href=""/> 

    <title>Web Application Project</title> 

    <script type="text/javascript" language="javascript" src="themetest/themetest.nocache.js"></script> 
    </head> 

    <body> 

    <iframe src="javascript:''" id="__gwt_historyFrame" tabIndex='-1' style="position:absolute;width:0;height:0;border:0"></iframe> 

    <noscript> 
     <div style="width: 22em; position: absolute; left: 50%; margin-left: -11em; color: red; background-color: white; border: 1px solid red; padding: 4px; font-family: sans-serif"> 
     Your web browser must have JavaScript enabled 
     in order for this application to display correctly. 
     </div> 
    </noscript> 


    </body> 
</html> 

Test.gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module rename-to='test'> 
    <inherits name='com.google.gwt.user.User'/> 
    <inherits name='com.gwtext.GwtExt' /> 

    <inherits name='com.google.gwt.user.theme.standard.Standard'/> 

    <stylesheet src="resources/css/ext-all.css" /> 
    <stylesheet src="resources/css/style.css" /> 
    <script src="adapter/ext/ext-base.js" /> 
    <script src="ext-all.js" /> 

    <entry-point class='com.test.client.ThemeTest'/> 

    <source path='client'/> 
    <source path='shared'/> 

</module> 

EntryPointClass:ThemeTest.java

@Override 
    public void onModuleLoad() { 
     FormPanel formPanel = new FormPanel(); 
     formPanel.setTitle("Form"); 

     TextField nameField = new TextField("Name"); 
     TextField descField = new TextField("Desc"); 

     formPanel.add(nameField); 
     formPanel.add(descField); 
     formPanel.add(new ThemeChanger()); 
     RootPanel.get().add(formPanel); 
    } 

ThemeChanger.java

public class ThemeChanger extends ComboBox { 

    public ThemeChanger() { 

      final Store store = new SimpleStore(new String[]{"theme", "label"}, new Object[][]{ 
          new Object[]{"/public/resources/themes/green/css/xtheme-green.css", "Green"}, 
          new Object[]{"", "Aero Glass"}, 
          new Object[]{"/public/resources/themes/red/css/xtheme-red.css", "Red"}, 
          new Object[]{"/public/resources/themes/gray/css/xtheme-gray.css", "Gray"}, 
      }); 
      store.load(); 

      setFieldLabel("Select Theme"); 
      setEditable(false); 
      setStore(store); 
      setDisplayField("label"); 
      setForceSelection(true); 
      setTriggerAction(ComboBox.ALL); 
      setValue("Gray"); 
      setFieldLabel("Switch theme"); 
      addListener(new ComboBoxListenerAdapter() { 
        public void onSelect(ComboBox comboBox, Record record, int index) { 
          try { 
           String theme = record.getAsString("theme"); 
           CSS.swapStyleSheet("theme", theme); 
          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
        } 
      }); 
      setWidth(100); 
    } 
} 
+0

您能否提供該應用程序的當前狀態?它顯示任何輸出或在後端拋出任何錯誤 – 2011-04-13 07:22:03

回答

1

檢查主題的位置。

您可以下載gxt-2.2.1.zip。 將其提取到您的計算機上。將會有一個名爲resources的目錄,其中包含主題 ,您需要將其複製到項目位置。

我已經palcing下面的例子檢查你的代碼值

new Object[]{"/test/resources/themes/slate/css/xtheme-slate.css", "Slate"}, 
new Object[]{"/test/resources/themes/access/css/xtheme-access.css", "Access"}, 

ThemeChanger班組長在上面的.jar給出

它的工作主題。

相關問題