Ответ 1
Параметр, который вы передаете аннотации @UiHandler
, - это имя соответствующего поля, которое вы хотите назначить, *Handler
. Итак, в этом случае вы назначаете ClickHandler
a Button button
(на самом деле, мы просто знаем имя поля).
Как это точно работает - это часть магии GWT:) Я предполагаю, что, как и любой другой код, связанный с UiBinder (я думаю, что была презентация в Google IO, которая показывала код, который генерирует UiBinder), на время компиляции компилятор определяет, что происходит. В этом примере: у нас есть Button button
, и мы имеем аннотированный метод @UiHandler
, который имеет параметр ClickEvent
→ , который должен означать a ClickHandler
(обратите внимание, что имя метода не имеет значения). Поэтому добавьте код во время компиляции (возможно, в конструктор), который добавляет этот обработчик к кнопке. Если вас интересует более полный ответ - проверьте источник: D
Но что вы можете использовать, для instance, a
ListBox
, чтобы получить событие элемент выбран? Где в документацию можно увидеть?
В ссылка на API GWT. В этом случае вы, вероятно, ищете ListBox.addChangeHandler. Но вы обычно не найдете там @UiHandler
связанного кода - потому что он будет избыточным - вы всегда строите методы @UiHandler
одинаково:
- Вы проверяете
*Handler
, который хотите добавить, скажемChangeHandler
-
Он имеет
void onChange(ChangeEvent event)
- поэтому ваш метод нуждается в параметреChangeEvent
и должен выглядеть следующим образом:@UiHandler("listBox") void whateverName(ChangeEvent event) { // ... }