3

jQuery のような JavaScript ライブラリには、次のように DOM 要素にクラスを動的に追加/削除する機能があります。

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

これらの要素にさまざまなスタイル ルールを動的に適用できるため、これは重要です。

GWT ランドでは、次のような 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. などのウィジェット以外の要素の場合<span>、Java コードでクラスを動的に追加/削除するにはどうすればよいですか?
  2. と言えば、<gwt:RadioButton>UiBinder XML の GWT の参照 XSD、または XML のすべての要素と属性の法的定義へのある種の公式参照を見つけることができないようですcom.google.gwt.*。たとえば、どの子要素と属性gwt:RadioButtonがサポートされているかについてのドキュメントはどこにありますか? しかも、その 1 つのウィジェットだけでなく、すべてのウィジェットで使用できます。誰かが私を正しい方向に向けることができますか?

前もって感謝します!

4

4 に答える 4

2

UiBinder.xsd は gwt-user- <version>.jar にあります (少なくとも 2.4.0 以降ですが、古いバージョンもあると思われます)。

あなたの他の質問について:あなたはいつでもDOMをトラバースすることができます

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

Elementと一致するを見つけますidが、それはあまりエレガントではありません。私は実際にこのような状況に遭遇したことはありません。それは興味深い質問です!

それが役立つことを願っています。

乾杯、

于 2012-11-08T11:53:00.953 に答える
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 に答える
1

任意の UI オブジェクト (RadioButton を含む) に対して、次のことができます。

yourUI.addStyleName("your-class");

GWT の場合: styleName = クラス

その他のUIObject メソッド

于 2012-11-08T12:20:25.943 に答える