4

単純な CSS グリッド システムを GWT に移植中です。.size1私のCSSファイルには現在、などのクラスが.size2あり、次のようなCSSリソースがあります-

interface MyResource extends CSSResource {

  @ClassName("size1")
  String size1();

  @ClassName("size2")
  String size2();

  // And so on
}

しかし、私が本当に欲しいのは、次のような単一の機能を持つことです-

String size(int size);

実行時にサイズを整数として渡すと、適切なクラスが生成されます。これは、javascript でウィジェットに使用できる/必要な実際のスペースを決定するためにいくつかの計算を実行し、適切なクラス名を添付するために必要です。

これは GWT でも可能なことですか?

編集:明確にするために、私はそのような方法を自分で簡単に書くことができます-

String size(int size) {
  switch(size) {
    case 1: return size1();
    case 2: return size2();
    ... and so on
  }
}

ただしMyResource、これはインターフェースであり、その実装は実行時に GWT によって生成されます。これは、sizeメソッドをMyResource型に追加できないことを意味します。だから私はMyResourceクラスにカスタムメソッドを追加する方法を求めていると思います.

4

2 に答える 2

1

cssファイルを介してこれを解決しようとすべきではないと思いますが、スタイルに動的な値を設定したい場合は、を介してコードでそれらの値を設定する必要がありますmyWidget.getElement().getStyle().setSomeCssMethod()。または、この場合、高さと幅のようにサイズを設定したいようです。ほとんどのウィジェットでは、これらの値を直接設定できます。何かが足りない場合を除いて、なぜcssクラスを使用し、コードで直接設定しないのですか?

于 2012-03-19T11:45:54.263 に答える
1

CSSResourceにメソッド名を渡すことはできません。

CSSResourceの目的は、CSSクラス名を縮小して難読化することであることに注意してください。

ただし、CSSリソースがこれを実行できるからといって、すべてのコーディングにCSSリソース使用する必要があるわけではありません。

たとえば、CSSリソースメソッドが文字列を返すことはすでに知っているので、文字列(動的クラス名)を返す独自のメソッドを作成し、CSSをロードするには、リソースに追加するときに@CssResource.NotStrictアノテーションを使用します。

于 2012-03-20T04:59:31.130 に答える