gwt通用页面级点击处理程序

时间:2014-03-20 01:07:24

标签: gwt uibinder

我有这种情况,我在页面上显示成功/错误消息,然后当用户在页面上执行任何操作时我希望它消失(我假设触发了点击事件,我可以忽略像去的事件到新的标签/窗口等。)。

我在页面上有其他“uihandlers”和“clickhandlers”。因此,如果我点击页面上的空白区域,则只会触发hidemessage来电,否则,如果我点击有效的“可点击”元素,我的hidemessage会先触发相应的处理程序。

有没有办法在不向页面上的所有点击工具添加hidemessage的情况下实现此目的?

修改:邮件小部件不是PopupPanel,因此setAutohide(true)无效。但这正是我正在寻找的行为。窗口小部件是extends Composite implements HasWidget, HasClickHandlers

的自定义窗口小部件

1 个答案:

答案 0 :(得分:0)

您可以在错误消息上执行此操作:

myPopupPanel.setAutoHideEnabled(true);

它完全符合您的需要。您还可以考虑在历史事件上设置自动隐藏(主要是后退按钮):

myPopupPanel.setAutoHideOnHistoryEventsEnabled(true);

编辑:

如果您没有使用PopupPanel,可以让您的Widget实现EventPreview,然后:

public boolean onEventPreview(Event event) {

Element target = DOM.eventGetTarget(event);

boolean widgetIsTarget = (target != null) && DOM.isOrHasChild(getElement(), target);

setVisible(widgetIsTarget):