GWT окружающие элементы с помощью href - PullRequest
1 голос
/ 30 декабря 2011

Есть ли какое-то чистое решение (или чистый обходной путь), чтобы окружить больше элементов 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 из этой конструкции.

Ответы [ 3 ]

2 голосов
/ 31 декабря 2011

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

1 голос
/ 30 декабря 2011

способ 1. Используйте HTMLPanel с внешним элементом :

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 голосов
/ 03 декабря 2013

Создайте класс HrefVerticalPanel, в котором вы переопределите метод add, чтобы окружить добавленный элемент объектом 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) {...}
}
...