22

我是第一次使用 GWT ClientBundle。我编写了扩展它的接口,这里是代码:

package edu.etf.fuzzy.client.login;

import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;

public interface Resources extends ClientBundle {

 @Source("logo_federacija.jpg")
 ImageResource logo();

 @Source("shim.gif")
 ImageResource shim();
}

我的问题是:我如何知道在哪里可以找到这些资源(在这种情况下为图像)。我应该把它们放在:a)与接口相同的目录中 - (丑陋)?b)在某些永远无法更改的特定目录中?c)在我想要的目录中,但应该有指定它的机制 - (会很棒)?

谢谢你。

4

2 回答 2

24

我通常为资源()创建一个新包,com.example.project.resource并将 ClientBundle接口和适当的资源放在那里(一起,在一个目录中)——它是一个 java 文件加上一堆图像,恕我直言,无需进一步分离。

至于资源的路径 - 您可以通过@Source("path")注释传递它们。例如,如果您的ClientBundle界面com.example.project.resource和图像在 中com.example.project.images,那么您将编写@Source("../images/shim.gif"). 您可能可以使用绝对路径,但请确保将它们存储在静态变量中并在资源之间共享,因此可以轻松覆盖它;)

于 2010-08-10T12:05:51.080 回答
3

类似于 Igor 的观点:

com.yoursite.resources: YourClientBundle.java
com.yoursite.resources.css: YourCssResource.java
com.yoursite.resources.images: image files here

这里的关键是,如果您不使用资源(CSS/Image/Text),GWT 编译器将忽略它。当您的应用程序获得持有者并且您有数百张图像并且不确定哪些使用了哪些没有使用时,这可以防止战争膨胀。

如果您使用将所有内容放在public/images文件夹中的选项,那么所有项目都将包含在您的应用程序战争中,无论它们是否被使用。

于 2013-03-06T15:09:24.090 回答