我初始化 UI,将所有元素添加到 VerticalPanel,并在初始化结束时检查用户密码是否过期。如果它即将到期,我会显示一个带有警告的对话框。
此页面的元素之一是带有 DataGrid 的 TabPanel,所有数据都是从服务器异步获取的。所以问题是,当密码过期对话框出现时,它位于 DataGrid 行的后面。当我在 Chrome 中检查元素时,我看到有 PopupGlassPanel -> DialogBox -> Table (with content)。但图片应该是:表格(有内容)-> PopupGlassPanel -> DialogBox。
但是我无法对服务器进行异步调用以检索数据。是否可以控制这些事情,以便从服务器检索所有数据,并且只有在它显示我的拨号框之后?
初始化方法如下:
public void initUI() {
final VerticalPanel mainPanel = new VerticalPanel();
Panel outer = new VerticalPanel();
DataHolder dataHolder = new DataHolder(); //this class contains DataGrid and makes async calls to server for data
outer.add(dataHolder.getContent());
tabPanel.add(outer, "Important Data", true);
mainPanel.add(tabPanel);
checkPasswordExpiration(getPwdExpiring());
RootPanel.get().add(mainPanel);
}
//...........
private void checkPasswordExpiration(int days) {
//...
//Show dialog box
//...
}