Чистый раствор (э) будет, ИМХО , используя 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
реализует множество других обработчиков, поэтому не забудьте проверить их все - они, как правило, очень полезны в других случаях использования.
Спасибо очень много. Были проблемы с обработчиком кликов, он был более новым, поэтому я сделал небольшую коррекцию: – zvjerka24