java - GWT-Ext 中的 ThemeChanger

标签 java gwt gwt-ext

我在 Mozilla 3.6.x 中使用 GWT 2.0、GWT-Ext 1.5 和 Java 1.6。

我正在尝试根据此 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>

入口点类: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);
    }
}

最佳答案

检查主题的位置。

您可以下载 gxt-2.2.1.zip。 在您的计算机上将其解压缩。将有一个名为 resources 的目录,其中包含主题 您需要将其复制到您的项目位置。

我已经通过放置以下示例值检查了您的代码

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

ThemeChanger 类中,主题在上面 .jar 中给出

成功了。

关于java - GWT-Ext 中的 ThemeChanger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603880/

相关文章:

java - GWT:UiBinder + 输入元素

gwt - 将 Google Analytics 集成到 GWT 应用程序中

java - 处理 GWT-Ext 的 NumberField 中 ENTER 键的回调

java - GWT 日志显示构造函数未定义,但文件中没有编译错误

html - 如何在 HTML 文本输入字段中隐藏插入符号?

Java String 类实例是常量

java - 如何使用java忽略Tesseract OCR中的特殊字符

Java:JDBC 获取列约束

java - 在常数时间内按索引从列表中获取多个元素

css - ClientBundle 中的 ImageResource 作为真正的 <img> 元素