java - GWT - image.getHeight() 和 image.getWidth() 在第一次加载时不起作用

标签 java gwt

我是 GWT 新手,想知道为什么我无法使其正常工作。

我正在尝试使用以下代码将大图像调整为较小的图像,同时保留纵横比:

Image image = new Image(myImageResource.getURL());
image.setPixelSize(newWidth, myImageResource.getHeight() * newWidth / myImageResource.getWidth());

但是发生的情况是,myImageResource.getHeight()myImageResource.getWidth() 函数在我第一次单击 CellList 项时返回 0(通过处理) SingleSelectionModel)执行上面的代码片段,并且从我第二次单击同一列表项时就可以完美工作。所有 CellList 项都会发生这种情况。我尝试了很多事情但无法让它发挥作用。

有人可以帮我解决问题吗?

最佳答案

当你对 image 进行操作时,实际上它并没有添加到 DOM 中。 您需要在将其添加到 DOM 后对其执行该操作。

    Image image = new Image();
            image.addLoadHandler(new LoadHandler() {
                @Override
                public void onLoad(LoadEvent event) {
              //Do your operations on image .
       image.getElement().getStyle().setVisibility(Style.Visibility.Visible); 
                      }
                 });

    image.getElement().getStyle().setVisibility(Style.Visibility.HIDDEN); 
    RootPanel.get().add(image);
    image.setUrl(url);

您可能会对Style.Visibility.Hidden 和 Visible产生疑问

原因:如果您对图像(调整大小)进行更改,用户可以先看到原始图像,然后再看到调整大小的图像。为了防止首先隐藏 ige,请进行更改,最后仅显示

关于java - GWT - image.getHeight() 和 image.getWidth() 在第一次加载时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051552/

相关文章:

java - 如何跟踪 GWT 中的 JSNI 错误?

java - 使用java分割文件

java - Hibernate注解对象映射

ios - GWT、mgwt 和视网膜显示

gwt - 如何将小部件放在CellTable单元中?

gwt - 在 GWT 项目中使用 JDK 中的包和类

GWT:将 UIBinder 与 HTML 模板一起使用......如何让它工作?

Java使用方法从一个文件读取并写入另一个文件

java - 两棵树中的 equals 方法

java - 在java中定位导入定义