我有一个带有弹出窗口的应用程序,我正在使用GWT DialogBox。 弹出窗口的内容可能会发生变化,因此我需要根据内容调整弹出窗口的大小。 我最初在创建时设置了弹出窗口的高度,但是如果更大则内容会显示在它之外。 删除setHeight,弹出窗口实际上适应内容,但我在弹出窗口中心时遇到问题。 当内容发生变化时,我会调用popup.center(),但是当我手动设置高度时,它并没有真正居中。
我认为这是一个计时问题,因为我在窗口调整大小时添加了一个监听器来使弹出窗口居中,在这种情况下弹出窗口正确居中。
有什么想法吗?
更新:认为我发现了这个问题。弹出窗口的内容包括一个表格。在显示表的内容之前触发ResizeEvent,因此居中实际上是考虑空表的大小。 我尝试添加一个LoadingStateChangeHandler来在状态为LOADED时触发ResizeEvent,但它仍然过早发射。
答案 0 :(得分:2)
问题是,当您调用popup.center()时,尚未计算窗口小部件的新大小。 大多数人使用它作为解决方案:
// <- popup content changes here
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
public void execute() {
popup.center();
}
});