【问题标题】:gwt generic page level click handlergwt 通用页面级点击处理程序
【发布时间】:2014-03-20 01:07:23
【问题描述】:

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

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

有没有一种方法可以在不将hidemessage 添加到页面上的所有点击处理程序的情况下实现此目的?

编辑:消息小部件不是PopupPanel,因此setAutohide(true) 不起作用。但这正是我正在寻找的行为。该小部件是一个自定义小部件,extends Composite implements HasWidget, HasClickHandlers

【问题讨论】:

    标签: gwt uibinder


    【解决方案1】:

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

    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):
    

    【讨论】:

    • 我应该提到该消息不是PopupPanel,而是extends Composite implements HasWidget, HasClickHandlers 的自定义小部件。但是谢谢这个!!最坏的情况,我会看看我是否可以基于此实现我自己的自动隐藏。编辑了问题
    • 抱歉耽搁了。在我的情况下,它几乎总是设置可见(假)。所以是的,这对我有用。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2012-03-23
    • 1970-01-01
    • 2010-12-08
    • 2016-04-20
    相关资源
    最近更新 更多