позволяет говорят, что у меня есть пользовательский виджет, который имеет ClickHandler. Вот пример:
public class TestWidget extends Composite {
private static TestWidgetUiBinder uiBinder = GWT
.create(TestWidgetUiBinder.class);
interface TestWidgetUiBinder extends UiBinder<Widget, TestWidget> {
}
@UiField
Button button;
public TestWidget(String firstName) {
initWidget(uiBinder.createAndBindUi(this));
button.setText(firstName);
}
@UiHandler("button")
void onClick(ClickEvent e) {
Window.alert("Hello!");
}
}
Когда я пытаюсь добавить этот Виджет как это:
TestWidget testWidget = new TestWidget("myTestWidget");
RootPanel.get().add(testWidget);
все прекрасно. Если я нажимаю на свою кнопку, я получаю сообщение, которое я ожидаю. Однако, если я добавляю его как это:
TestWidget testWidget = new TestWidget("myTestWidget");
RootPanel.getBodyElement().appendChild(testWidget.getElement());
мое событие щелчка не запускается. Я - struggeling для понимания почему. Было бы хорошо, если кто-то мог бы объяснить это мне или связать меня с ресурсом, где я могу считать это. Наконец я хотел бы знать, возможно ли добавить clickhandler впоследствии, я добавил дочернее событие и если тот путь рекомендуется. Спасибо это совершенствуется для справки.
kuku
Когда вы вызываете add ()
, Widget.onAttach ()
вызывается в виджете, который добавляется на панель. onAttach выполняет некоторую работу по регистрации виджета для получения событий. appendChild ()
просто присоединяет один элемент DOM к другому и больше ничего не делает. Вы должны иметь возможность заставить события работать во втором случае, выполнив следующие действия:
Element element = testWidget.getElement();
RootPanel.getBodyElement().appendChild(element);
DOM.sinkEvents(element,
Event.getTypeInt(ClickEvent.getType().getName())
| DOM.getEventsSunk(element);
Однако я не тестировал это и не рекомендовал бы вам использовать это в реальном приложении. Использование add ()
определенно предпочтительнее, использование appendChild ()
таким образом не имеет преимуществ и может привести к неожиданному поведению.