如何获取包装给定DOM元素的GWT小部件?

时间:2011-02-24 01:44:27

标签: events dom gwt widget

当发生点击事件时,我想确定点击了哪些小部件。请注意,出于性能原因,我特别不希望为每个小部件添加点击处理程序。

获取被点击的元素(它将是本机事件的事件目标)很容易,但是如何找到相应的小部件?

2 个答案:

答案 0 :(得分:2)

afaik没有标准功能。但是你可以像在GWT的com.google.gwt.user.client.ui.Tree类中那样完成它。

基本上它通过首先从根Widget的Element中收集Elements链到单击的Widget元素(参见Tree类中的私有方法collectElementChain)来工作。通过这个Elements链,可以通过从Root小部件遍历到单击的Widget找到Widget(参见Tree类中的私有方法findItemByChain)。

这适用于Tree,因为每个Widget / Element的子元素的Widget和Element索引匹配,并且因为它只允许将特定的widget设置为TreeItem的。

答案 1 :(得分:0)

实际上,您可以使用gwtqueryDOM.getEventListener(element)方法获取与窗口小部件主要元素关联的窗口小部件,该方法返回与元素关联的窗口小部件。

您可以在另一个帖子中查看我的回复,了解一些有效的代码:GWT - How to retrive real clicked widget?