当其父级变为可见时,可以懒惰地初始化/加载GXT小部件

时间:2016-12-15 04:09:48

标签: gwt applet lazy-loading gxt gwtp

我对GXT(以及GWT / GWTP)很新。我想知道是否可以在显示包含其面板的模式对话框时懒惰地加载GXT(4.0)[自定义]窗口小部件(对话框最初未显示,仅在单击按钮时出现)。

我想要这种行为的原因是这个小部件需要加载applet HTML代码,当页面最初实例化所有其他字段小部件/面板/对话框时,该代码不可用。因此,我需要延迟从另一个应用程序获取applet代码,直到明确显示对话框为止。

这可能吗?

1 个答案:

答案 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

希望这会有所帮助......