2

我有一个带有一些弹出窗口的应用程序,为此我正在使用 GWT DialogBox。弹出窗口的内容可以改变,所以我需要调整弹出窗口的大小以适应内容。我最初是在创建时设置弹出窗口的高度,但如果更大,内容会显示在它外面。删除 setHeight,弹出窗口实际上会根据内容进行调整,但我在将弹出窗口居中时遇到问题。当内容发生变化时,我调用 popup.center(),但它并没有像我手动设置高度时那样真正居中。

我认为这是一个时间问题,因为我添加了一个侦听器以在调整窗口大小时将弹出窗口居中,在这种情况下,弹出窗口正确居中。

有任何想法吗?

更新:认为我发现了问题。弹出的内容包括一个表格。在显示表格内容之前触发 ResizeEvent,因此居中实际上是在考虑空表格的大小。我尝试添加一个 LoadingStateChangeHandler 以在状态为 LOADED 时触发 ResizeEvent,但它仍然触发得太早。

4

1 回答 1

2

问题是当您调用popup.center() 时尚未计算小部件的新大小。大多数人将其用作解决方案:

// <- popup content changes here
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
    public void execute() {
        popup.center();
    }
});
于 2013-08-15T09:11:27.577 回答