3

像 jQuery 这样的 JavaScript 库能够动态地向 DOM 元素添加/删除类,如下所示:

$("#some-element").addClass("make-me-pretty");

这很重要,因为它允许您对这些元素动态应用不同的样式规则。

在 GWT-land 中,您可能有一个像这样的 UiBinder XML 片段:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:gwt="urn:import:com.google.gwt.user.client.ui">
    <div>
        <span id="">Some content</span>

        <gwt:RadioButton ...>
            ...
        </gwt:RadioButton>

        <!-- etc. -->
    </div>
</ui:UiBinder>
  1. 对于非 Widget 元素,如<span>,如何在 Java 代码中动态添加/删除类?
  2. 说到<gwt:RadioButton>,我似乎找不到 GWT 对 UiBinder XML 的参考 XSD,或者对 XML 的所有元素和属性的法律定义的某种官方参考com.google.gwt.*。例如,我在哪里可以找到有关子元素和属性gwt:RadioButton支持的文档?不仅针对那个小部件,还针对所有这些小部件!有人可以指出我正确的方向吗?

提前致谢!

4

4 回答 4

2

您可以在 gwt-user-.jar 中找到 UiBinder.xsd <version>(至少从 2.4.0 开始,但我也怀疑旧版本)。

至于你的另一个问题:你总是可以使用遍历 DOM

yourUi.getElement().getElementsByTagName( "span" )

并找到Element匹配的id,但这不是很优雅。我实际上从未遇到过这种情况;这是一个有趣的问题!

希望有帮助。

干杯,

于 2012-11-08T11:53:00.953 回答
1

对于任何 UIobject(包括 RadioButton),您可以:

yourUI.addStyleName("your-class");

在 GWT 中:styleName = 类

更多UIObject 方法

于 2012-11-08T12:20:25.943 回答
1

我认为你可以做这样的事情。将您作为 UI 字段映射到 GWT 'SpanElement'。

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
  <div>
    Hello, <span ui:field='nameSpan'/>.
  </div>
</ui:UiBinder>

在绑定到上述 ui.xml 文件的类中,您可以按如下方式更改类

      interface MyUiBinder extends UiBinder<DivElement, HelloWorld> {}
      private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

      @UiField SpanElement nameSpan;

      public HelloWorld() {
        setElement(uiBinder.createAndBindUi(this));
      }

      public void changeClass(){
           nameSpan.setClassName("newClass");
      }   
于 2012-11-08T14:21:55.753 回答
0

我猜你有一个 html 页面,你可以在其中加载你的小部件。您可以在**.ui.xml文件中分配一个类,就像在 html 页面中一样。

<div class="MyClass" align="middle">
    <gwt:VerticalPanel>
              .......
    </gwt:VerticalPanel>
</div>

然后在main.css文件中编写 css 规则。

.MyClass{background-color:black;}

加载视图时,main.css文件将“看到”类的名称并对其进行操作。

于 2014-04-01T14:40:50.263 回答