2010-11-21 47 views
0

我的圖像圖標與我的項目中的源文件在同一目錄中。從源文件中,我調用button.setIcon(「image.png」)或button.setIcon(「/ image.png」)或button.setIcon(「full/path/to/image.png」),但它沒有顯示我的圖像。我的問題是:Smart Gwt如何爲圖像解析url路徑?我查看了文檔,但不清楚。有人能幫忙嗎?謝謝。關於smartgwt的問題setIcon(String url)

回答

3

我成功使用以下步驟獲取SmartGWT的圖像。

在與GWT模塊的client包相同的級別上,我創建了一個名爲public的文件夾。 (在Eclipse中,您不能創建名爲public的程序包,因爲這不是一個有效的程序包名稱,您必須將其明確地創建爲一個文件夾。)此名稱爲public的目錄被GWT特殊處理。 GWT編譯器將所有包含的內容複製到生成的主模塊目錄中。所以我通常在public下創建一個子目錄images,並將屬於我的GWT模塊的所有圖像放在那裏。

例如:

com/stuff 
    client 
     Main.java 
     ... 
    public 
     images 
      a.png 
      b.png 
    mainmodule.gwt.xml 

然後就在入口點我告訴SmartGWT的看images子目錄圖像的開頭(本例中爲mainmodule我主要的GWT模塊的名稱):

public void onModuleLoad() { 
    Page.setAppImgDir("[APP]/mainmodule/images/"); 
    ... 
} 

[APP]部分路徑是特殊的SmartGWT語法。

後來我能夠創建一個IBUTTON像這樣:

final IButton aBtn = new IButton("A Button"); 
aBtn.setIcon("a.png"); 

有時需要創建的URL不是SmartGWT的,但對於普通的GWT或純HTML的圖像。對於這些情況,您可以使用以下代碼創建URL:

final String bUrl = GWT.getModuleBaseURL() + "images/b.png"; 
+0

謝謝。我實際上想出了一個解決方法,將圖像置於戰爭中的img文件夾中,然後讓Ant構建將其複製到每個構建的項目中。然後我用GWT.getModuleBaseURL()+「images/b.png」調用圖像文件;但你的方式更加優雅!再次感謝。 – Kwame 2010-11-23 07:53:43

2

有時您還可以重用主題中的現有圖標。 要使用它們,請嘗試路徑[SKIN]/{ComponentName}/image.png 其中{ComponentName}是您的主題或標準主題中的現有文件夾之一。

例如:

node.setIcon("[SKIN]/TreeGrid/folder_open.png"); 
0

我已經幫助這種方式。

  1. 嘗試編譯您的項目。
  2. 查找項目中的文件夾WAR:load-skin.js
  3. 在ModuleName中添加路徑。HTML它後:

<script> 
 
    var isomorphicDir = "ModuleName/sc/"; 
 
</script>

例如,對於我的項目

<!--load skin--> 
 
<script src="/ModuleName/sc/skins/Enterprise/load_skin.js"/>