【问题标题】:Display a GWT Image in a centered PopupPanel onLoad在居中的 PopupPanel onLoad 中显示 GWT 图像
【发布时间】:2011-03-10 10:10:34
【问题描述】:

使用 GWT,我使用 ClickHandler 显示图像缩略图,然后在居中的 PopupPanel 中显示完整图像(可以是几 MB)。为了使其居中,必须在显示弹出窗口之前加载图像,否则图像的左上角位于屏幕中间(图像认为它是 1px 大)。这是我用来执行此操作的代码:

    private void showImagePopup() {
        final PopupPanel popupImage = new PopupPanel();
        popupImage.setAutoHideEnabled(true);
        popupImage.setStyleName("popupImage"); /* Make image fill 90% of screen */

        final Image image = new Image();
        image.addLoadHandler(new LoadHandler() {
            @Override
            public void onLoad(LoadEvent event) {
                popupImage.add(image);
                popupImage.center();
            }
        });
        image.setUrl(attachmentUrl + CFeedPostAttachment.ATTACHMENT_FILE);
        Image.prefetch(attachmentUrl + CFeedPostAttachment.ATTACHMENT_FILE);
    }

但是,LoadEvent 事件永远不会触发,因此图像永远不会显示。我该如何克服呢?我想避免使用http://code.google.com/p/gwt-image-loader/,因为如果我可以避免的话,我不想添加额外的库。谢谢。

【问题讨论】:

    标签: java gwt onload-event


    【解决方案1】:

    onLoad() 方法只会在图像加载到 DOM 后触发。这是一个快速的解决方法:

    ...
    
    final Image image = new Image(attachmentUrl + CFeedPostAttachment.ATTACHMENT_FILE);
    image.addLoadHandler(new LoadHandler() {
        @Override
        public void onLoad(LoadEvent event) {
            // since the image has been loaded, the dimensions are known
            popupImage.center(); 
            // only now show the image
            popupImage.setVisible(true);
        }
     });
    
     popupImage.add(image);
     // hide the image until it has been fetched
     popupImage.setVisible(false);
     // this causes the image to be loaded into the DOM
     popupImage.show();
    
     ...
    

    希望对您有所帮助。

    【讨论】:

    • 这真的很老,但只是想让你知道这真的帮助了我。我总是在让负载监听器工作时遇到问题,这是唯一似乎可靠地解决问题的解决方案。谢谢!
    • @rjcarr - 很高兴它有帮助 :) 是的,那是很久以前的事了。我不再使用 GWT xD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多