关于smartgwt setIcon(String url)的问题

时间:2010-11-21 22:45:14

标签: java gwt smartgwt

我的项目中的图像图标与源文件相同。从源文件我调用button.setIcon(“image.png”),或button.setIcon(“/ image.png”)或button.setIcon(“full / path / to / image.png”),但它没有显示我的形象。我的问题是:Smart Gwt如何解析图像的URL路径?我查看了文档,但目前尚不清楚。有人能帮忙吗?感谢。

3 个答案:

答案 0 :(得分:3)

我成功使用以下程序来获取SmartGWT工作的图像。

在与GWT模块的client包相同的级别,我创建了一个名为public的文件夹。 (在Eclipse中,您无法创建名为public的包,因为这不是有效的包名。您必须将其明确创建为文件夹。)名称为public的此目录由GWT处理。 GWT编译器将所有包含的内容复制到生成的主模块目录中。所以我通常在images下创建一个子目录public,并将属于我的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");

有时需要为不是SmartGWT的图像创建URL,而是为纯GWT或纯HTML创建URL。对于这些情况,您可以使用

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

答案 1 :(得分:2)

有时您也可以重复使用主题中的现有图标。 要使用它们,请尝试路径[SKIN]/{ComponentName}/image.png 其中{ComponentName}是主题或标准主题中的现有文件夹之一。

示例:

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

答案 2 :(得分:0)

我帮助过这种方式。

  1. 尝试编译您的项目。
  2. 在项目WAR中找到该文件夹​​:load-skin.js
  3. 在:
  4. 之后,将ModuleName.html中的路径添加到其中

    
    
    <script>
         var isomorphicDir = "ModuleName/sc/";
    </script>
    &#13;
    &#13;
    &#13;

    我的项目示例

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