在我的GWT項目中,我試圖獲取它,因此兩個DialogBoxes可以在對方之間傳遞信息。其中一個包含MapWidget,當在另一個DialogBox中按下按鈕時,位置信息從另一個DialogBox的MapWidget中接收。有沒有人有任何提示,我應該如何協調兩個不同的DialogBoxes出現?我是否應該將兩者的代碼包裝在Composite中?此外,GWT中有沒有一個例子可以同時處理兩個對話框?例如,如果我點擊兩個框外,都應該被解僱。我想知道是否有辦法讓他們一次都集中注意力,所以我可以在兩者之間切換而不會導致消失。在GWT中連接兩個對話框
1
A
回答
1
共享對話框之間數據
在我看來,「正確」的方式做,這將是實現在應用某種MVP structure使演示管理視圖(DialogBox
ES,中其他的東西),並知道如何將簡單的數據傳遞給視圖來顯示(演示者將處理MapWidget
數據,該視圖將負責將其顯示在DOM上)。
不過,如果你正在尋找一個更快/更簡單的方法,你有兩個選擇(你選擇真的取決於應用程序結構):
- 創建
Composite
,正如你所提到,知道如何來回傳遞必要的數據。通過讓Composite
管理數據對象並告訴兩個DialogBox
如何顯示它,您實際上正在接近您的Composite
中的MVP體系結構。 - 子類
DialogBox
轉換爲包含HandlerManager
(有時用作「事件總線」)的類,該按鈕在按下按鈕時觸發事件。您可以創建旨在在兩個DialogBox
es之間來回傳遞數據的事件(即使使用類型參數使它們類型安全)。有關使用HandlerManager
的詳細信息,請參閱this StackOverflow question。上面鏈接的MVP文章也有一些good information on using an event bus。
Model-View-Presenter是一種經過實踐驗證的構建應用程序的方法,可以生成更多可測試的代碼,更好的項目結構,並且可以在做出這樣的決策時爲您提供指導。我強烈建議您檢查一下,如果你還沒有。
共享自動隱藏功能
GWT的(上DialogBox
的原型)提供了一個方法addAutoHidePartner(Element)
這也是正是如此描述:一個自動隱藏的合作伙伴中出現不會隱藏
鼠標事件面板設置爲自動隱藏。
所以,你只能創建接近當你點擊之外他們兩個兩個自動隱藏DialogBox
ES(例如,他們沒有當您在任的箱子點擊關閉),用下面的代碼:
// Create the dialog boxes
DialogBox dbox1 = new DialogBox(true, false);
DialogBox dbox2 = new DialogBox(true, false);
// Set some visual options
dbox1.setPopupPosition(10, 10);
dbox2.setPopupPosition(200, 10);
dbox1.setAnimationEnabled(true);
dbox2.setAnimationEnabled(false);
// Set the dialog boxes' caption and content
dbox1.setHTML("Dialog Box 1");
dbox2.setHTML("Dialog Box 2");
dbox1.setWidget(new HTML("This is the first dialog box."));
dbox2.setWidget(new HTML("This is the second dialog box."));
// Making dobx2 a partner of dbox1 means clicking
// in dbox2 won't cause dbox1 to close
dbox1.addAutoHidePartner(dbox2.getElement());
// Similarly, setting dbox1 as a partner of dbox2 means
// clicking in dbox1 won't cause dbox2 to close
dbox2.addAutoHidePartner(dbox1.getElement());
// Show the dialog boxes
dbox1.show();
dbox2.show();
您可以與其中任一個對話框進行交互,而無需其他關閉。如果您只想要單向合作伙伴關係,請忽略撥打setAutoHidePartner
的適當電話。
相關問題
- 1. 對話框中的gwt tabindex
- 2. Facebook連接對話框
- 3. Facebook連接對話框
- 4. 連接dgrid一個對話框
- 5. Symbian S60 - 使用單個連接對話框的多個連接
- 6. 鏈接jquery對話框:第二個對話框不在中心
- 7. PyQt:連接對話框中的按鈕
- 8. 連接Facebook:問題在對話框
- 9. GWT - 通過EventBus連接兩個模塊
- 10. Facebook連接對話框彈出框
- 11. GWT確認對話框
- 12. MFC>將對話框連接到對話框類
- 13. 在GWT中的對話框中動畫化一個小部件
- 14. GWT中心對話框放大
- 15. gwt中的模態對話框clicklistener
- 16. 對話框中的兩個JQGrid
- 17. 在GWT中創建一個模態對話框
- 18. 讓ServerSocket接受連接,想連接時關閉對話框
- 19. Delphi ODBC連接對話框組件?
- 20. 遠程桌面連接 - 對話框
- 21. SQL Server連接對話框位置
- 22. Java的數據連接對話框
- 23. MediaRouteActionProvider連接對話框主題
- 24. 連接到SQL服務器對話框
- 25. 如何彈出「連接到」對話框?
- 26. Facebook連接對話框不關閉
- 27. VS2010的SQL連接對話框
- 28. Facebook連接彈出對話框設置
- 29. jQuery Mobile中的鏈接對話框:第二個對話框在Android中消失
- 30. 連接兩個JSON對象
非常感謝,它的工作原理!唯一的問題是,似乎我無法爲兩個對話框都設置setGlassEnabled(true)。好吧。 – 2010-04-26 17:28:15
很高興聽到它!你可以考慮重載'show()'來檢查是否顯示另一個'DialogBox'並且啓用了玻璃,並且在調用父'show()'之前以編程方式設置玻璃的啓用狀態。這將允許您在任何時候顯示一個或兩個「DialogBox」時啓用玻璃。 (當然,當盒子被解散時,你也必須檢查玻璃狀態。) – 2010-04-29 01:54:12