GWT-обработка нескольких событий - PullRequest
1 голос
/ 22 марта 2011

У меня есть 3 виджета на моей стороне пользовательского интерфейса (1 ListBox, 2 TextBoxes).Я хотел бы создать обработчик, который мог бы обрабатывать событие изменения значения, если любой из трех виджетов изменяет значение, а также, если на Blur для ListBox. Скелет кода будет что-то вроде этого

registerHandler(new multiWidgetHandler());
private class multiWidgetHandler{
  //code for handling onValueChange for 3 widgets and also onBlur for listBox
}

Я неуверен, как реализовать это чисто.Нужна помощь.Некоторые примеры кода будут оценены.

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Вы можете реализовать несколько интерфейсов обработчиков в одном обработчике, а затем добавить этот обработчик несколько раз.

private class MultiWidgetHandler implements ValueChangeHandler<String>, BlurHandler, ChangeHandler
{
    protected void handleIt() { Window.alert("These events are so handled right now!"); }

    public void onBlur(BlurEvent e) { handleIt(); }
    public void onValueChange(ValueChangeEvent<String> e) { handleIt(); }
    public void onChange(ChangeEvent e) { handleIt(); }
}

...

MultiWidgetHandler handler = new MultiWidgetHandler();

listBox.addChangeHandler(handler);
listBox.addBlurHandler(handler);
textArea1.addValueChangeHandler(handler);
textArea2.addValueChangeHandler(handler);
0 голосов
/ 22 марта 2011

Почему вы планируете такое поведение?Обычно на обработчике для одного события.Если вы хотите направить все 3 события в один обработчик, вы можете заставить свои 3 различных обработчика вызывать «глобальный» метод: HandleAllEvents ().Если все события одного типа, вы можете зарегистрировать один и тот же обработчик 3 раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...