GWT ImageBundle问题:图像不显示:包含代码

时间:2009-12-10 14:01:03

标签: gwt

使用ImageBundle时无法显示图像。我已经按照GWT教程作为指南,但是我的图像没有显示。

我可以在我的浏览器中查看图像(来自Eclipse内部) - 因此它们肯定存在。使用ImageBundle时,我显然做错了什么,但我无法理解我做错了什么。

logo.jpg图像应该只显示自己。

ajaxLoader.gif应该首先显示自己(为了覆盖获取facebook用户配置文件数据的RPC),然后它将被pic_square网址上的图像替换。

当我查看GWT生成的html时,我发现logo.jpg图像应该在哪里,有一个gif图像[http://sandpit1965.appspot.com/sandpit/clear.cache.gif],但我不明白它来自何处。

任何帮助将不胜感激 - 源代码如下。

的Darren

图像包结构

org.redboffin.sandpit.client.icons  
                           |___ SandpitImageBundle.java
                           |___ ajaxLoader.gif  
                           |___ logo.jpeg

Relevent Classes

package org.redboffin.sandpit.client.facebook;

import org.redboffin.sandpit.client.icons.SandpitImageBundle;

import com.google.gwt.core.client.GWT;  
import com.google.gwt.event.dom.client.ErrorEvent;  
import com.google.gwt.event.dom.client.ErrorHandler;  
import com.google.gwt.user.client.Window;  
import com.google.gwt.user.client.rpc.AsyncCallback;  
import com.google.gwt.user.client.ui.AbstractImagePrototype;  
import com.google.gwt.user.client.ui.Button;  
import com.google.gwt.user.client.ui.Composite;  
import com.google.gwt.user.client.ui.DockPanel;  
import com.google.gwt.user.client.ui.HTML;  
import com.google.gwt.user.client.ui.Image;  
import com.google.gwt.user.client.ui.VerticalPanel;  
import com.google.gwt.xml.client.Document;  
import com.google.gwt.xml.client.Element;  
import com.google.gwt.xml.client.XMLParser;  

public class ProfileWidget extends Composite implements RBWidget {

    // Data  
    private String firstName = null;  
    private String lastName = null;  
    private String picSquareUrl = null;  

    // Elements  
    private Image picSquare = new Image();  
    private Image logo = new Image();  
    private Button logoutButton = new Button("Logout");  
    private DockPanel panel = new DockPanel();  
    private HTML html = new HTML("Welcome to Sandpit.");  

    /**  
     * Create a remote service proxy to talk to the server-side User Data  
     * service.  
     */  
    private final UserDataServiceAsync userDataService = GWT.create(UserDataService.class);  

    public ProfileWidget() {  

        this.rpcWidget = new RPCWidget(this);  

        this.initProfileImage();  
        this.initLogoImage();  

        panel.add(picSquare, DockPanel.WEST);  
        panel.add(html, DockPanel.CENTER);  

        VerticalPanel verticalPanel = new VerticalPanel();  
        verticalPanel.add(logo);  
        verticalPanel.add(logoutButton);  

        panel.add(verticalPanel, DockPanel.EAST);  

        panel.add(rpcWidget, DockPanel.SOUTH);  

        initWidget(panel);  

    }  

    private void initProfileImage() {  

        // Display ajaxLoader.gif  
        SandpitImageBundle sib = GWT.create(SandpitImageBundle.class);  
        AbstractImagePrototype aip = sib.ajaxLoader();  
        sib.applyTo(this.picSquare);  

    }  

    private void initLogoImage() {  

        // Display logo.jpg  
        SandpitImageBundle sib = GWT.create(SandpitImageBundle.class);  
        AbstractImagePrototype aip = sib.logo();  
        aip.applyTo(this.logo);  

    }  

    // Other methods omitted...  

}  

package org.redboffin.sandpit.client.icons;  

import com.google.gwt.user.client.ui.AbstractImagePrototype;  
import com.google.gwt.user.client.ui.ImageBundle;  

public interface SandpitImageBundle extends ImageBundle {  

    /**  
     * Would match the file 'logo.jpg', 'logo.gif', or 'logo.png' located in the  
     * same package as this type.  
     */  
    public AbstractImagePrototype logo();  

    /**  
     * Would match the file 'ajaxLoader.jpg', 'ajaxLoader.gif', or 'ajaxLoader.png' located in the
     * same package as this type.  
     */  
    public AbstractImagePrototype ajaxLoader();  

}  

2 个答案:

答案 0 :(得分:0)

我不明白为什么,但这现在有效,我没有改变任何东西。

答案 1 :(得分:0)

在您“编译”项目并将生成的“war”放入服务器公用文件夹之前,不会显示图像。您只是向非现有文件发出请求。