クリーン(ER)ソリューションは次のようになり、私見を:2.すべてのラベル要素にclickHandlersをインストール
hp = new HTMLPanel("<a href=... id="myid"></a>");
hp.add(vp, "myid");
方法FocusPanel
を使用します。あなたはパネル全体にClickHandler
を追加することができます - 結果は何でも、あなたがそのパネルでクリックしたが、その1つのClickHandler
(内部のすべてのWidgets
にClickHandler
を追加する必要はありません)によって処理されますということです。
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
の1つ、おそらくはPanel
という別のものを保持できることを意味します。この場合はVerticalPanel
です。 FocusPanel
は他のハンドラを多く実装していますので、それらをすべてチェックしてください。他の使用例では非常に便利です。
で追加された要素を囲むようにaddメソッドをオーバーライドしたクラスを作成しますHrefVerticalPanelありがとうございました。クリックハンドラに問題がありましたが、それは最近実行されたので、私は小さな修正を行いました: – zvjerka24