2010-08-10 57 views
20

我第一次使用GWT ClientBundle。我寫的接口,擴展它,這裏是代碼:如何在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)在我想要的目錄中,但應該有機制來指定它 - (會很棒)?

謝謝。

回答

24

我通常爲資源(com.example.project.resource)創建一個新的包,並將ClientBundle接口和相應的資源放在那裏(就像在一個目錄中一樣) - 它是一個java文件加上一堆圖像,不需要進一步分離, 恕我直言。

至於資源的路徑 - 您可以通過@Source("path")註釋傳遞它們。例如,如果您的com.example.project.resource中的ClientBundle接口和com.example.project.images中的圖像存在,那麼您會寫@Source("../images/shim.gif")。你也許可以使用絕對路徑,但要確保你將它們存儲在一個靜態變量和共享之間的資源,所以它可以很容易地覆蓋;)

+0

無論我如何嘗試,我得到: 來自類型Resources的方法synchronous()指的是缺少的類型TextResource – miroslavign 2015-08-25 17:52:30

+0

@miroslavign:請打開一個新問題,評論部分不是解決新問題的地方。 – 2015-08-25 19:13:45

3

伊戈爾的點類似:

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

這裏的關鍵如果你不使用資源(CSS/Image/Text),GWT編譯器會忽略它。這可以防止戰爭膨脹作爲您的應用程序獲取持有人,並且您擁有數百個圖像,並且不確定哪些被使用,哪些不是。

如果您使用選項丟棄public/images文件夾中的所有內容,則所有項目都將包含在您的應用程序戰爭中,而不管它們是否被使用。