Для того, чтобы в GWT прикрепить EventListener на простой DOM Element необходимо сделать следующее.
Но так можно повесить слушатель только для одного события, для нескольких событий необходимо писать код следующим образом.
Такое написание объясняется тем, что события являются битовыми константами.
Метод sinkEvents принимает итоговое значение битов.
И для прикрепления к элементу слушателя на несколько событий необходимо провести логическую операцию над используемыми событиями.
final Element element = selector.getInputElement(); Event.sinkEvents(element, Event.ONKEYUP); Event.setEventListener(element, new EventListener() { @Override public void onBrowserEvent(Event event) { if (Event.ONKEYUP == event.getTypeInt()) { Window.alert("ONKEYUP "); } } });
Но так можно повесить слушатель только для одного события, для нескольких событий необходимо писать код следующим образом.
Event.sinkEvents(element, Event.ONKEYUP | Event.ONBLUR | Event.ONFOCUS);
Такое написание объясняется тем, что события являются битовыми константами.
/** * Fired when an element receives keyboard focus. */ public static final int ONFOCUS = 0x00800;
Метод sinkEvents принимает итоговое значение битов.
public static void sinkEvents(Element elem, int eventBits) { // This cast is always valid because both Element types are JSOs and have // no new fields are added in the subclass. DOM.sinkEvents((com.google.gwt.user.client.Element) elem, eventBits); }
final Element element = selector.getInputElement(); Event.sinkEvents(element, Event.ONKEYUP | Event.ONBLUR | Event.ONFOCUS); Event.setEventListener(element, new EventListener() { @Override public void onBrowserEvent(Event event) { if (Event.ONKEYUP == event.getTypeInt()) { Window.alert("ONKEYUP "); event.preventDefault(); } else if (Event.ONBLUR == event.getTypeInt()) { Window.alert("ONBLUR "); event.preventDefault(); } else if (Event.ONFOCUS == event.getTypeInt()) { Window.alert("ONFOCUS "); event.preventDefault(); } } });
Комментариев нет:
Отправить комментарий