似乎 Panel 没有从 HasClickHandlers 继承,我无法将 clickHandler 添加到 DivElement。有没有办法将 clickHandler 添加到 DIV?
编辑:我不能使用标签的原因是我想要可点击的 DIV 包含其他 DIV。
默认情况下,Panel 不会“接收”onCLick 事件。也就是说,单击面板实际上不会导致“ClickEvent”,因此不会触发处理程序。要将点击事件与 Panel(或任何其他 Widget)一起使用,您必须首先使用适当的事件位在其上调用 sinkEvents()。
例如:
SimplePanel p = new SimplePanel();
p.sinkEvents(Event.ONCLICK);
p.setTitle("Click me");
p.setSize("600px", "600px");
p.addHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
Window.alert("SimplePanel clicked!");
}
}, ClickEvent.getType());
上面的代码首先为 SimplePanel 使用“启用”点击事件,p.sinkEvents(Event.ONCLICK);
然后继续将标准 ClickHandler 添加到它上面。请注意,即使 SimplePanel 没有实现 HasClickHandlers,您也始终可以使用该addHandler()
方法添加处理程序。
使用FocusPanel
.
一个简单的面板,使其内容可聚焦,并增加了捕捉鼠标和键盘事件的能力。
public class ClickableDiv extends FlowPanel implements HasClickHandlers {
@Override
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
}
这应该就是你所需要的。addDomHandler
将为您处理“下沉”事件类型。