0

我是 GWT 的新手,想知道为什么我不能让它工作。

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

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

但发生的情况是,当我第一次单击执行上述代码片段的 CellList 项(通过 SingleSelectionModel 处理)时,函数返回 0,并且从我第二次单击相同的列表项开始完美运行myImageResource.getHeight()myImageResource.getWidth()这发生在所有 CellList 项上。我尝试了很多东西,但无法让它发挥作用。

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

4

2 回答 2

2

当你对 进行操作时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

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

于 2013-02-24T20:48:04.187 回答
0

You can get the correct height and width of the image only if the image is already rendered in the UI.

我猜你正试图在点击时渲染图像。如果是这样,对于第一次单击,图像尚未呈现。所以它返回 0 作为高度和宽度。首先单击它会返回正确的值,因为图像已经渲染。所以它完美地工作。

解决方案:与 CellList Items 一起渲染图像,并使用 CSS visible 或 display 属性控制图像可见性。单击时,您可以使用计算出的高度和宽度启用图像可见性。

于 2013-02-24T14:37:27.780 回答