如何在屏幕点击时删除 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 菜单栏?的主要内容,如果未能解决你的问题,请参考以下文章

GWT:如何在鼠标事件上更改菜单栏图像?

gwt 中的菜单栏

在 GWT 中,如何调整菜单项的大小以使其仅限于菜单栏

在 Google Web Toolkit (GWT) 中实现页眉、页脚和菜单栏

GWT 菜单栏中的图像而不是文本

如何在悬停时增加 gwt menuitem