2011-12-30 7 views
1

hrefでさらに多くの要素を囲むクリーンな解決策(またはクリーンな回避策)がありますか?例えば、 。 私はこのような構成から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); 

のようなものを持っています。

答えて

1

方法外< A>要素を持つ1. HTMLPanel:

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

で追加された要素を囲むようにaddメソッドをオーバーライドしたクラスを作成しますHrefVerticalPanelありがとうございました。クリックハンドラに問題がありましたが、それは最近実行されたので、私は小さな修正を行いました: – zvjerka24

2

クリーン(ER)ソリューションは次のようになり、私見を:2.すべてのラベル要素にclickHandlersをインストール

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

方法FocusPanelを使用します。あなたはパネル全体にClickHandlerを追加することができます - 結果は何でも、あなたがそのパネルでクリックしたが、その1つのClickHandler(内部のすべてのWidgetsClickHandlerを追加する必要はありません)によって処理されますということです。

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の1つ、おそらくはPanelという別のものを保持できることを意味します。この場合はVerticalPanelです。 FocusPanelは他のハンドラを多く実装していますので、それらをすべてチェックしてください。他の使用例では非常に便利です。

0

あなたがアンカーオブジェクト

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) {...} 
} 
関連する問題