2010-11-11 12 views
10

मैं निम्नलिखित कोड की कोशिश की:जीडब्ल्यूटी में छवि को प्रीफेच कैसे करें?

RootPanel root = RootPanel.get("root"); 
root.clear(); 
final FlowPanel p = new FlowPanel(); 
root.add(p); 
for (int i=0; i<20; ++i) { 
    String url = "/thumb/"+i; 
    final Image img = new Image(url); 
    img.addLoadHandler(new LoadHandler() { 
     @Override 
     public void onLoad(LoadEvent event) { 
     p.add(img); 
    } 
}); 
Image.prefetch(url); 

लेकिन यह मेरे लिए काम नहीं करता। क्या मुझे कुछ याद आया?

उत्तर

1

स्टैन ने क्या कहा है समझ में आता है।

मुझे लगता है कि समस्या यह है कि लोडहैंडलर को किसी कारण से नहीं बुलाया जा रहा है। मैंने हमेशा लोडहैंडलर के बिना प्रबंधित किया है, लेकिन मैं आमतौर पर जावाडॉक डेमो के अनुसार एक त्रुटि जोड़ता हूं जो लोड होने में विफल होने पर ट्रिगर होता है। यह काम करना चाहिए:

final Image img = new Image(); 

img.addErrorHandler(new ErrorHandler() { 
     public void onError(ErrorEvent event) { 
     // Handle the error 
     } 
    }); 

img.setUrl(url); 
p.add(img); 

GWT जावाडोक में उदाहरण देखें: http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/user/client/ui/Image.html

7

छवि लोड हैंडलर केवल मामले में कहा जाता है, जब छवि डोम से जुड़ा हुआ है। तो तुम loadHandler बाहर डोम करने के लिए छवि को जोड़ने के लिए है:

p.add(img); 
img.addLoadHandler(new LoadHandler() { 
    @Override 
    public void onLoad(LoadEvent event) { 
     //do some stuff, image is loaded 
    } 
} 
+1

dreak सही है, अपने कोड एक तर्क त्रुटि है और img डोम से जुड़ी कभी नहीं किया गया है। इस स्निपेट के साथ अपने कोड की तुलना करें – LoneWolf

1
ImageElement img = DOM.createImg().cast(); 
img.setSrc("images/myImage.png"); 
+0

यह कैसे मदद करनी चाहिए? – confile

+0

यह prefetch – vinnyjames

+0

को पूरा करने का एक छोटा तरीका है लेकिन मैं ImageElement को किसी छवि में कैसे बदलूं? – confile

संबंधित मुद्दे