4

我正在将一个简单的 CSS 网格系统移植到 GWT。我的 CSS 文件目前有类.size1.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 Resource可以做到这一点,并不意味着您必须将它用于所有代码。

例如,您已经知道 CSS Resource 方法返回一个字符串,因此只需创建自己的返回字符串(您的动态类名称)的方法,并在将其添加到资源时使用@CssResource.NotStrict注释来加载您的 CSS。

于 2012-03-20T04:59:31.130 回答