GWT周围的元素与href

时间:2011-12-30 19:35:40

标签: java gwt click href

是否有一些干净的解决方案(或干净的解决方法)用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 个答案:

答案 0 :(得分: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);

请注意,FocusPanelSimplePanel - 这意味着它只能包含一个Widget,很可能只有Panel,例如VerticalPanelFocusPanel实现了很多其他处理程序,所以一定要检查它们 - 它们在其他用例中往往非常有用。

答案 1 :(得分: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);

答案 2 :(得分:0)

创建一个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) {...}
}