Чистым (эр) решением будет, имхо, использование FocusPanel
.Вы можете добавить ClickHandler
ко всей панели - в результате все, что вы нажмете на этой панели, будет обрабатываться этим ClickHandler
(нет необходимости добавлять ClickHandler
ко всем Widgets
внутри):
VerticalPanel vp = new VerticalPanel();
Label l1 = new Label("This is label 1");
Label l2 = new Label("This is label 2");
vp.add(l1);
vp.add(l2);
FocusPanel focusPanel = new FocusPanel();
focusPanel.add(vp);
ClickHandler clickHandler = new ClickHanler() {
public void onClick(ClickEvent event) {
Window.open(...);
}
};
focusPanel.addClickHandler(clickHandler);
Обратите внимание, что FocusPanel
- это SimplePanel
- это означает, что он может содержать только один Widget
, скорее всего, другой Panel
, такой как VerticalPanel
в этомдело.FocusPanel
реализует множество других обработчиков, поэтому обязательно проверьте их все - они, как правило, очень полезны в других случаях использования.