1

GWT で次のようなカスタム ウィジェットを作成しました。

public class Header extends Composite {
    private Button btnContribute;

    public Header() {
        btnContribute = new Button("Contribute");
    }
} //This is only a sample - in actual there are few bundled widgets

私のエントリ ポイント クラスでは、このカスタム ウィジェットを、dockLayoutPanel のノース パネルとして使用しました。

public class MyClass implements EntryPoint {
private DockLayoutPanel dockLayoutPanel;
private ScrollPanel contentScrollPanel;

private Header header; //My custom widget

public void onModuleLoad() {
    RootPanel rootPanel = RootPanel.get();

    dockLayoutPanel = new DockLayoutPanel(Unit.EM); 
    rootPanel.add(dockLayoutPanel, 20, 10);

    header = new Header();
    dockLayoutPanel.addNorth(header, 7.7);

    dockLayoutPanel.addSouth(new HTML("south"), 7.7);
    dockLayoutPanel.addWest(new HTML("west"), 7.7);

    contentScrollPanel = new ScrollPanel();
    dockLayoutPanel.add(contentScrollPanel);

    htmlContent = new HTML("content", true);
    contentScrollPanel.setWidget(htmlContent);
    htmlContent.setSize("100%", "100%");
}
}

カスタム ウィジェット 'btnContribute' のボタンに onClick イベント ハンドラを作成して、'contentScrollPanel' を動的に更新し、現在のコンテンツを削除し、フォームをロードするようにしたいと考えています。

問題は、カスタム ウィジェットでイベント ハンドラーを作成しようとすると、エントリ ポイント クラスからウィジェットを追加および削除する方法がわからないことです。

4

2 に答える 2

1

クラスでゲッターを作成しますHeader;

Entrypointクラスに次のようなハンドラーを追加します。

header.getbtnContribute().addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            //TODO
        }
    });
于 2013-02-15T07:11:59.707 に答える
0

ClickHandlerカスタム ウィジェットで(のようなを受け入れるメソッドを作成しますaddContributeClickHandler(ClickHandler handler)。このメソッドでは、与えられClickHandlerた をbtnContribute.

contentScrollPanelEntryPoint で作成した後、呼び出します

header.addContributeClickHandler(new ClickHandler(){
    @Override
    public void onClick(ClickEvent event) {
        contentScrollPanel.clear();
        //...
    }
});

contentScrollPanelこれが機能するには、メンバーであるかメンバーである必要がありますfinal

于 2013-02-15T07:13:43.127 に答える