2016-06-15 61 views
0

背景我是新来GWT,我的搜索查询不转了一下我在寻找,但我怕我没有措辞他们正确,所以我很抱歉,如果这是一个简单/重复的问题。添加clickHandler事件的FlowPanel的用法在GWT

我目前正在尝试弄清楚如何将ClickHandler添加到未被特定Widget占用的FlowPanel区域。我知道我可以简单地通过在FocusPanel内部包装整个FlowPanel来添加一个ClickHandler,但是当点击流面板中的任何小部件时会触发。这些小部件通常是具有复杂结构的复合小部件。

我的最终目标,这里是处理当用户单击空白处点击,但允许个别小部件都有自己独特的单击处理程序,如果在一个特定的插件的用户点击。

有什么建议吗?

谢谢!

+0

除非需要重点关注,否则不需要在FocusPanel中包装FlowPanel。你可以简单地使用'myFlowPanel.addDomHandler(myClickHandler,ClickEvent.getType())'。 –

回答

0

你有两种选择。 (A)将相同的点击处理程序添加到所有窗口小部件,然后在onClick内部执行基于哪个窗口小部件是点击源的不同操作。

(B)获取鼠标位置(从ClickEvent),然后通过子部件循环,看看这款鼠标的位置落在里面其中的一个。

+0

有趣,谢谢。我没有到达保持小部件列表的相似,但略有不同的解决方案,然后做'event.getNativeEvent()。getEventTarget()',然后通过'getElement检查每个小部件的()。isOrHasChild(targetElement)'。这与您的选项(B)类似,但使用元素层次而不是直接定位。一种方法可能比另一种方法更受欢迎是否有理由? – Bryan