在你开始拍摄我之前我已经检查了答案,我用谷歌搜索直到我的手指流血但我还没有找到一个简单,简洁的答案。所以我再次要求所有那些可能有这个问题的人。
问题:如何打开一个带有formpanel的新窗口。
上下文:我有一个列出了很多项目的应用,我希望有人编辑一个条目,我想要一个新窗口打开,这样他们就可以编辑属性然后点击保存。您在许多应用程序中找到的标准内容。
架构: 我有一个名为UI的客户端模块,它有十几个类,可以从菜单中选择绘制小部件并填充主区域。我有一个名为UI.html的html页面,其中包含标记。多数民众赞成。
我看过的选项
调用 Window.Open(),但您需要定义一个html文件。我没有。我可以创建一个空的但如何将窗口小部件注入其中?
使用 jsni $ wnd 创建一个新窗口并获取对它的引用。但是我如何将表单面板注入其中?
使用 popuppanel 。它们看起来很糟糕 - 如果通过JS打开一个窗口非常简单,我希望它在gwt中。
也许我很想知道如何使用GWT我不知道。
任何帮助将不胜感激
由于
答案 0 :(得分:12)
我让它工作的方式如下: 我写了一个jsni方法来打开一个新窗口
public static native BodyElement getBodyElement() /*-{
var win = window.open("", "win", "width=940,height=400,status=1,resizeable=1,scrollbars=1"); // a window object
win.document.open("text/html", "replace");
我在新窗口中添加了一个基本体并返回了body元素
win.document.write("<HTML><HEAD>"+css1+css2+"</HEAD><BODY><div class=\"mainpanel\"><div style=\"width: 100%; height: 54px;\"><div id=\"mainbody\"class=\"mainbody\" style=\"width: 100%;\"></div></div></div></BODY></HTML>");
win.document.close();
win.focus();
return win.document.body;
}-*/;
然后我从我的主java方法中调用了这个方法
BodyElement bdElement = getBodyElement();
然后我将具有大量小部件的面板注入到返回的body元素
中SystemConfiguration config = new SystemConfiguration(); bdElement.getOwnerDocument().getElementById("mainbody").appendChild(config.getElement());
答案 1 :(得分:1)
我同意Bogdan:使用DialogBox。
如果你不能,你在选项1中提到Window.open()
:
Window.open("form.html?entry=54")
Save
和Cancel
按钮Save
或Cancel
时关闭弹出窗口答案 2 :(得分:0)
你不能只使用DialogBox吗?