为什么我的锚元素没有收到任何事件?

Why am I not getting any events for my anchor element?

对于一个非常简单的元素

public static class ToolHtml extends Anchor {

    private Long toolId;

    public ToolHtml(ToolDetails toolDetails) {

        this.toolId = toolDetails.getToolId();
        this.setText(toolDetails.getName());

        Style style = this.getElement().getStyle();
        style.setColor("orange");

        this.getElement().setId(DOM.createUniqueId());
    }

    public Long getToolId() {
        return this.toolId;
    }

}

我正在尝试添加一些事件处理程序。我对 DragStartEvent 很感兴趣,但即使 ClickEvent 似乎也不起作用,我就是想不通为什么:

public void addOfferItem(ToolHtml toolHtml) {

    Set<ToolHtml> toolHtmlSet = this.toolIdToToolHtml.get(toolHtml.getToolId());

    if (toolHtmlSet == null) {
        toolHtmlSet = new HashSet<>();
        this.toolIdToToolHtml.put(toolHtml.getToolId(), toolHtmlSet);
    }

    toolHtml.getElement().setAttribute("contenteditable", "false");
    toolHtml.getElement().setAttribute("draggable", "true");

    toolHtml.addBitlessDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            LOGGER.fine("Click");
            LOGGER.fine("Click");
            LOGGER.fine("Click");

        }
    }, ClickEvent.getType());

    toolHtml.addDomHandler((DragStartEvent event) -> {
                LOGGER.fine("HANDLER DRAG START");
            },
            DragStartEvent.getType());

    toolHtml.addDomHandler((DragStartEvent event) -> {
                LOGGER.fine("DOM DRAG START");
            },
            DragStartEvent.getType());

    toolHtml.addBitlessDomHandler((DragStartEvent event) -> {
                LOGGER.fine("DRAG START");
            },
            DragStartEvent.getType());

    toolHtmlSet.add(toolHtml);

    // Attach/append to DOM
    this.getElement().appendChild(toolHtml.getElement());
}

有人知道这里的问题是什么吗?

您附加了一个元素,而不是附加了您的处理程序的 Widget。您需要将一个小部件添加到一个小部件才能使所有功能正常工作。

注意:您需要使用

而不是 toolHtml.addBitlessDomHandler
toolHtml.addClickHandler