Я использую GWT. Я начал добавлять события к своим виджетам, добавляя EventHandlers.
Код примера обработчика событий:
widget.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// do something
}
});
Затем я обнаружил, что существует другой способ обработки событий с помощью sinkEvents().
Код примера событий стока (с этого веб-сайта):
{
...
sinkEvents(Event.ONMOUSEDOWN | Event.ONMOUSEUP | Event.ONMOUSEOVER |Event.ONMOUSEOUT)
...
}
public void onBrowserEvent(Event event) {
Element td = getEventTargetCell(event);
if (td == null) return;
Element tr = DOM.getParent(td);
switch (DOM.eventGetType(event)) {
case Event.ONMOUSEDOWN: {
// do something
break;
}
case Event.ONMOUSEUP: {
// do something
break;
}
case Event.ONMOUSEOVER: {
// do something
break;
}
case Event.ONMOUSEOUT: {
// do something
break;
}
}
}
- Являются ли EventHandlers и SinkEvents выполнение одной и той же функциональной работы?
- Если да, каковы компромиссы? (где бы вы использовали один над другим)
- Если нет, то как они отличаются?