2010-11-12 11 views
6

在開始拍攝我之前,我已經檢查了答案,並且使用了Google搜索,直到我的手指流血,但是我還沒有找到簡單,簡潔的答案。所以我再次問所有那些可能有這個問題。在GWT中使用Widget打開新窗口

問題:如何用一個formpanel打開一個新窗口。

上下文:我有一個應用程序列出了很多項目,我希望有人編輯一個條目,我想打開一個新窗口,以便他們可以編輯屬性,然後點擊保存。一個標準的東西,你在很多應用程序中找到。

架構: 我有一個稱爲UI一個客戶端模塊,它有畫小部件和從菜單中選擇時必須填寫主地區十幾類。我有一個名爲UI.html的HTML頁面,頭部有標籤。而已。

選項我見過

  1. 呼叫Window.Open(),但你需要定義一個HTML文件。我沒有。我可以創建一個空的,但你怎麼注入一個小部件?

  2. 使用jsni $ wnd創建一個新窗口並獲得對其的引用。但我如何注入一個表單面板?

  3. 使用a popuppanel。他們看起來很爛 - 再加上如果通過JS打開一個窗口非常簡單,我期望它在gwt中。

也許小姐理解如何使用GWT我不知道。

任何幫助,將不勝感激

感謝

+0

最佳答案,我所看到的是:https://groups.google.com/forum/?fromgroups#!topic/google-web-toolkit/G73s5fqpYBg – 2012-07-19 08:38:55

回答

1

我同意波格丹:使用對話框。

如果你不能,你Window.open()你在選項1中提到:

  1. 創建另一個GWT模塊和形式。HTML代碼,加載它
  2. Window.open("form.html?entry=54")
  3. 已經從URL中讀取的形式GWT模塊,加載項,允許它進行編輯,並提供SaveCancel按鈕
  4. 點擊SaveCancel時關閉彈出
+0

謝謝你們的快速回復。我的牛肉與對話框沒有窗框,也沒有典型的窗戶外觀,網址等。 – Primus 2010-11-12 19:13:13

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"); 

我增加的基體爲新的窗口,並返回所述主體元件

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; 
    }-*/; 

i,那麼調用此方法從我的主要Java方法

BodyElement bdElement = getBodyElement(); 

我然後注入我的面板,其具有大量的小部件到返回body元素

SystemConfiguration config = new SystemConfiguration();    bdElement.getOwnerDocument().getElementById("mainbody").appendChild(config.getElement()); 
+0

+1也用於分享您的解決方案。 – nikhil 2013-03-13 11:32:42