2011-12-30 2 views
1

Есть ли какое-то чистое решение (или очистить обходное решение), чтобы окружить больше элементов href. например. у меня есть что-то вроде этогоGWT окружающие элементы с href

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); 

Я хотел бы сделать HREF от этой конструкции.

ответ

1

способом 1. Использование HTMLPanel с наружным элементом < A>:

hp = new HTMLPanel("<a href=... id="myid"></a>"); 
hp.add(vp, "myid"); 

способом 2. Установите clickHandlers на всех элементах метки:

ch = new ClickHanler() { 
    public void onClick(ClickEvent event) { 
    Window.open(...); 
    } 
}; 
l1.addClickHandler(ch); 
l2.addClickHandler(ch); 
+0

Спасибо очень много. Были проблемы с обработчиком кликов, он был более новым, поэтому я сделал небольшую коррекцию: – zvjerka24

2

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

0

Создать класс HrefVerticalPanel где вы переопределять метод добавить окружать добавленный элемент с объектом Anchor

class HrefVerticalPanel extends VerticalPanel { 
    public void add(Widget w) { 
    Anchor surrounding = new Anchor(); 
    surrounding.add(w); 
    super.add(surrounding); 
    handleAnchorUrl(surrounding); 
    } 

    protected void handleAnchorUrl(Anchor toBeClicked) {...} 
} 
Смежные вопросы