在我的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. Symbian S60 - 使用单个连接对话框的多个连接
- 5. 连接Facebook:问题在对话框
- 6. PyQt:连接对话框中的按钮
- 7. GWT - 通过EventBus连接两个模块
- 8. Facebook连接对话框弹出框
- 9. GWT确认对话框
- 10. MFC>将对话框连接到对话框类
- 11. 在GWT中的对话框中动画化一个小部件
- 12. gwt中的模态对话框clicklistener
- 13. 在GWT中创建一个模态对话框
- 14. Facebook连接对话框不关闭
- 15. VS2010的SQL连接对话框
- 16. 连接到SQL服务器对话框
- 17. Java的数据连接对话框
- 18. Delphi ODBC连接对话框组件?
- 19. SQL Server连接对话框位置
- 20. Facebook连接弹出对话框设置
- 21. 远程桌面连接 - 对话框
- 22. 在watson对话框对话框中插入超链接
- 23. jQuery Mobile多个对话框在一个对话框中
- 24. 连接两个电话号码
- 25. 在Facebook连接登录对话框中旋转iPhone键盘
- 26. 我可以在JavaScript中获得两个连续的对话框吗?
- 27. Android在一个活动中创建两个对话框
- 28. 如何构建GWT加载对话框?
- 29. gwt对话框不会移动
- 30. GWT - 地方/活动对话框
非常感谢,它的工作原理!唯一的问题是,似乎我无法为两个对话框都设置setGlassEnabled(true)。好吧。 – 2010-04-26 17:28:15
很高兴听到它!你可以考虑重载'show()'来检查是否显示另一个'DialogBox'并且启用了玻璃,并且在调用父'show()'之前以编程方式设置玻璃的启用状态。这将允许您在任何时候显示一个或两个“DialogBox”时启用玻璃。 (当然,当盒子被解散时,你也必须检查玻璃状态。) – 2010-04-29 01:54:12