如何在屏幕点击时删除 GWT 菜单栏?
Posted
技术标签:
【中文标题】如何在屏幕点击时删除 GWT 菜单栏?【英文标题】:How to remove GWT menubar on Screen click? 【发布时间】:2013-01-22 20:33:33 【问题描述】:我是使用 GWT 的初学者。我有一个menubar
,它会在Label click
上弹出。当用户单击屏幕上的任何位置时,我需要删除它,除了导致它显示的标签(合法)我尝试了各种方法,比如在
RootPanel.get().addDomHandler(clickDetectHandler, ClickEvent.getType());
public void onClick(ClickEvent event)
Object source = event.getSource();
if (!(source instanceof MenuBar))
panel.remove(menu);
我什至尝试使用MouseOutEvent
,但它没有检测到点击。单击返回legal label
,我可以将其删除。但是我需要在检测到屏幕上的点击时将其删除。请指教。
【问题讨论】:
if 条件表明如果单击 MenuBar 则应将其删除。 您的意思是,当您点击“法律”时,包括多伦多、芝加哥在内的垂直面板变得可见,而当您点击其他地方时,您希望它消失吗? @Swapnil 完全正确。它是一个 GWT 菜单栏。在合法的点击处理程序上,我在流程面板中添加了菜单栏。 Legal 是一个标签,也是同一个流程面板的一部分 @Sednus:我尝试在 RootPanel.get() 和 MenuBar 上挂钩 onclick 事件。 正如@Sednus 所建议的,当单击事件源是 MenuBar 的实例时,代码似乎将其删除。不应该是另一种方式吗? 【参考方案1】:GWT 有一个名为 PopupPanel 的面板,它会自动处理您想要的行为。 引用 javadoc:
"PopupPanel 的构造函数将 'auto-hide' 作为其布尔参数。 如果设置了此项,则当用户在其外部单击时,面板会自动关闭。"
是否可以在 PopupPanel 中显示弹出菜单?
http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/PopupPanel.html
【讨论】:
【参考方案2】:查看this GWT 示例。这似乎有你描述的行为。它带有源代码。
您也可以尝试处理菜单小部件上的blur event。
【讨论】:
以上是关于如何在屏幕点击时删除 GWT 菜单栏?的主要内容,如果未能解决你的问题,请参考以下文章