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