Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除屏幕单击上的GWT菜单栏?_Java_Events_Gwt_Menubar - Fatal编程技术网

Java 如何删除屏幕单击上的GWT菜单栏?

Java 如何删除屏幕单击上的GWT菜单栏?,java,events,gwt,menubar,Java,Events,Gwt,Menubar,我是一个使用GWT的初学者。我有一个菜单栏,它会在标签点击时弹出。我需要删除它时,用户点击屏幕上的任何地方,除了标签,导致它显示(法律)我尝试了各种方法,如挂起这个事件上 RootPanel.get().addDomHandler(clickDetectHandler,ClickEvent.getType()) 我甚至试过使用MouseOutEvent,但它没有检测到点击。我只需点击合法标签,即可将其删除。但我需要在检测到点击屏幕时将其删除。请告知。GWT有一个名为PopupPanel的面板,

我是一个使用GWT的初学者。我有一个
菜单栏
,它会在
标签点击时弹出。我需要删除它时,用户点击屏幕上的任何地方,除了标签,导致它显示(法律)我尝试了各种方法,如挂起这个事件上

RootPanel.get().addDomHandler(clickDetectHandler,ClickEvent.getType())


我甚至试过使用
MouseOutEvent
,但它没有检测到点击。我只需点击
合法标签
,即可将其删除。但我需要在检测到点击屏幕时将其删除。请告知。

GWT有一个名为PopupPanel的面板,它可以自动准确地处理您想要的行为。 引用javadoc:

PopupPanel的构造函数将“自动隐藏”作为其布尔参数。 如果设置了此选项,则当用户在面板外部单击时,面板会自动关闭。”

是否可以在PopupPanel内显示弹出式菜单

看看GWT样本。这似乎有你描述的行为。它附带源代码


或者,您可以尝试处理菜单上的小部件。

如果条件建议,如果单击菜单栏,则应将其删除。您的意思是,当您单击“法律”时,包括多伦多、芝加哥在内的垂直面板将可见,而当您单击其他地方时,您希望它消失吗?@Swapnil确实如此。这是一个GWT菜单栏。在合法的点击处理程序中,我在flowpanel中添加菜单栏。法律是一个标签,也是其一部分flowpanel@Sednus:我尝试在RootPanel.get()和MenuBar上挂接onclick事件。正如@Sednus所建议的,当click事件源是MenuBar的实例时,代码似乎会将其删除。不应该是另一种方式吗?
public void onClick(ClickEvent event) {
            Object source = event.getSource();
            if (!(source instanceof MenuBar))
                  panel.remove(menu);