1

GWTは、UIObject.addStyleName()を介してコードでクラスが使用されているCSSファイルをどのように検索しますか?コントロールにCSSを検出させるにはどうすればよいですか?

私は比較的大きなプロジェクトを持っています。隣接するUiBinderxmlなしで完全にプログラムで作成する独自のエディターを作成しました。

UIObject.addStyleName()の呼び出しを介して、エディターの特定の内部UIオブジェクトにcssスタイルを割り当てます。

GWTが実行時にCSSを見つけるために、CSSをどこに配置すべきか理解できません。

私は試した:

  • 「ui:style」タグを使用してエディターを使用するフォームのUiBinderテンプレートで参照されるCSSファイルに必要なcssクラスを配置します。
  • client \フォルダーに個別のcssファイルを作成し、「stylesheet」タグを使用してgwtモジュールxmlで参照します。

これらの方法はどれも機能しませんでした。

4

2 に答える 2

2

https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCss#cssfilesを参照してください

アプリで CSS を取得する方法は 4 つあります (2 つのカテゴリに分けます)。

  • 外部スタイルシート: 自分gwt.xmlまたは HTML ホスト ページから参照します。アプリにバンドルするには、モジュール内のフォルダー (パッケージpublicの隣) に配置します。clientまたはあなたの戦争フォルダに。これが有効であることを確認するには、GWT にバンドルされているテーマを見てください。
  • a CssResource: CSS ファイルをインターフェイスclientとともに階層に配置します。の属性をのメソッドへの注釈として使用し、 のコンテンツを動的に生成された CSS ファイル (注釈を介して参照) として使用するため、UiBinder の は同じように機能します。また、UiBinder は自動的に呼び出します。生成された.ClientBundleCssResourceui:styleCssResourceui:styleClientBundleui:style@SourceensureInjected()CssResource
于 2012-04-06T11:14:57.713 に答える
0

使っていますか:

YOURSTYLENAMECLASS().ensureInjected();

要素に追加する前に。

ここに の JavaDoc がensureInjected()あります。これは、私自身の言葉よりもよく説明しています ;):

package com.google.gwt.resources.client;
//....
public interface CssResource extends CssResourceBase {
//...

* Calls
* {@link com.google.gwt.dom.client.StyleInjector#injectStylesheet(String)} to
* inject the contents of the CssResource into the DOM. Repeated calls to this
* method on an instance of a CssResources will have no effect.
* 
* @return <code>true</code> if this method mutated the DOM.
*/
boolean ensureInjected();
于 2012-04-06T07:13:08.823 に答える