1

GWT 如何通过 UIObject.addStyleName() 查找其类在代码中使用的 CSS 文件?我应该怎么做才能让我的控件找到我的 css ?

我有比较大的项目。我创建了自己的编辑器,完全以编程方式创建,没有相邻的 UiBinder xml。

我通过调用UIObject.addStyleName()将 css 样式分配给我的编辑器的某些内部 ui 对象。

我不明白应该在哪里放置我的 CSS,以便 GWT 可以在运行时找到它。

我试过了:

  • 将所需的 css 类放入使用“ui:style”标签使用我的编辑器的表单的 UiBinder 模板中引用的 CSS 文件中。
  • 在 client\ 文件夹中创建单独的 css 文件,并使用“样式表”标签在 gwt 模块 xml 中引用它。

这些方法都不起作用。

4

2 回答 2

2

请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCss#cssfiles

有 4 种方法(我将它们分为 2 个类别)在您的应用中获取 CSS:

  • 外部样式表:从您的gwt.xml或您的 HTML 主机页面引用它。要将其捆绑到您的应用程序中,请将其放在public模块内的文件夹中(在您的包旁边client);或在您的战争文件夹中。查看 GWT 中捆绑的主题以了解其效果。
  • a CssResource: 将 CSS 文件与接口client一起放入您的层次结构中。在 UiBinder 中的工作方式相同,因为它使用as 中方法的注释属性动态生成 a ,并将 的内容作为动态生成的 CSS 文件(通过注释引用)。UiBinder 也会自动调用你,因为你不一定对生成的.ClientBundleCssResourceui:styleCssResourceui:styleClientBundleui:style@SourceensureInjected()CssResource
于 2012-04-06T11:14:57.713 回答
0

你正在用吗:

YOURSTYLENAMECLASS().ensureInjected();

在将其添加到您的元素之前。

这是JavaDoc for 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 回答