我是 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/