在显示复杂HTML的GWT HTML小部件中,如何为特定子元素添加事件处理程序?

Uri*_*Uri 2 gwt

我正在优化以前使用各种嵌套面板来处理DIV和Spans的GWT应用程序.我将整个表生成为单个SafeHtml对象,然后将其分配到单个SafeHtml小部件中.

我现在希望能够在特定"单元格"跨度而不是整个表格的水平上跟踪鼠标悬停/鼠标移除事件,但我不知道如何做到这一点.

如果我向HTML小部件本身添加一个处理程序,我将获得各种元素的事件.

jus*_*sio 6

从2.0开始,有一种简单的方法可以做到这一点.例如,如果HTML代码包含在某种窗口小部件(HTMLPanel或HTML)中,则可以调用addDomHandler(<handler>,<eventtyoe>)该窗口小部件,因此您将从内部html接收事件.例如,如果HTMLPanel中有一堆锚点,并且您想知道单击了哪一个,则可以执行以下操作:

panel.addDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            Element element=  event.getNativeEvent().getEventTarget().cast();
            if(element.getTagName().equals("A")) {
                AnchorElement anchor = element.cast();
                Window.alert("Anchor with href " + anchor.getHref() + " was clicked");
            }

        }
    }, ClickEvent.getType());
Run Code Online (Sandbox Code Playgroud)

由于您想要跟踪鼠标悬停/移出事件,您将不得不使用2个不同的dom处理程序,找出触发事件时所需的单元格,然后更改其状态.