我使用gwt popup来显示一些消息,但它没有显示在 中央 如果我调用popup.center(),则显示事件。实际上它没有居中 只是第一次,如果我关闭它并再次打开它,每件事都可以, 但不是第一次。如何解决?
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
Image fullImage = new Image(optionImageName);
fullImage.setAltText("Loading image ...");
imagePopup.setWidget(fullImage);
imagePopup.center();
}
});
我在http://www.devcomments.com/gwt-Popup-is-not-centered-at107182.htm上发现了这个问题,今天我也遇到了这个问题。我找到了答案,我将在此发布以供将来参考。
答案 0 :(得分:2)
我发现问题是当您将弹出窗口居中时图像未加载完成。这是第一次发生,因为第二次图像以某种方式被浏览器兑现。
解决方案是将其集中在onLoad事件上。
GWT.runAsync(new RunAsyncCallback() {
@Override
public void onSuccess() {
Image fullImage = new Image(optionImageName);
fullImage.setAltText("Loading image ...");
fullImage.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
imagePopup.center();
}
});
imagePopup.setWidget(fullImage);
imagePopup.center();
}
});
答案 1 :(得分:1)
我也有这个问题。你必须两次调用中心的原因是因为当弹出窗口被“隐藏”时,弹出容器实际上是从DOM中删除的。这是有问题的,因为您的弹出窗口必须现在“显示”弹出窗口的内容,然后才能检查图像是否已加载。
建议实施的问题是,如果图像未缓存,则第一次调用center()将不正确。第二次呼叫中心将纠正它。在浏览器上,这会导致弹出对话框的移动(看起来非常糟糕)。
我会推荐以下内容: 1.将等待的微调器放在同一显示器中并最初显示。 2.调用loadHandler,显示图像,隐藏微调器和重新定位。
答案 2 :(得分:0)
public void onClick(ClickEvent event) {
// TODO Auto-generated method stub
final ADPopup popup = new ADPopup();
popup.setHeight("300px");
popup.setWidth("500px");
popup.setPopupPositionAndShow(new PopupPanel.PositionCallback() {
public void setPosition(int offsetWidth, int offsetHeight) {
// TODO Auto-generated method stub
int left = (Window.getClientWidth() - offsetWidth) / 3;
int top = (Window.getClientHeight() - offsetHeight) / 3;
popup.setPopupPosition(left, top);
}
});
popup.show();
}
希望得到这个帮助。