我对GXT(以及GWT / GWTP)很新。我想知道是否可以在显示包含其面板的模式对话框时懒惰地加载GXT(4.0)[自定义]窗口小部件(对话框最初未显示,仅在单击按钮时出现)。
我想要这种行为的原因是这个小部件需要加载applet HTML代码,当页面最初实例化所有其他字段小部件/面板/对话框时,该代码不可用。因此,我需要延迟从另一个应用程序获取applet代码,直到明确显示对话框为止。
这可能吗?
答案 0 :(得分:0)
加载到GWT框架(IFrameElement)中的图像和网址的延迟加载。一旦说使用LoadHandler事件加载了image / url,就可以捕获事件。
private void loadLoginPage() {
final Frame frame = new Frame(url_base + url_login); // set the frames url
frame.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
// Get the document from the loaded frame (similar to RootPanel on main page)
Document doc = IFrameElement.as(frame.getElement()).getContentDocument();
// From here you can wrap widgets in the frame like this
final TextBox username = TextBox.wrap(doc.getElementById("username")); // from the html doc using id="username"
// grab a div element
DivElement div = DivElement.as(doc.getElementById("mydiv"));
// Create content to be added to the doc
ButtonElement button_elem = doc.createPushButtonElement();
Button button = Button.wrap(button_elem);
// attach to the document
div.appendChild(button.getElement());
}
});
// Attach to DOM
RootPanel.get("mything").add(frame);
}
类似于图片加载。
Image image = new Image(image_url);
image.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
// image is ready to be used.
}
});
// attach to DOM to initiate loading of the image
希望这会有所帮助......