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.

contentScrollPanel在您的 EntryPoint 中创建后,调用

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

contentScrollPanel必须是final或成员才能使其正常工作。

于 2013-02-15T07:13:43.127 回答