GWT从Custom Widget加载面板

时间:2013-02-15 07:01:57

标签: java gwt event-handling

我在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',删除当前内容,并在其中加载表单。

问题在于,当我尝试在自定义窗口小部件中创建事件处理程序时,我无法弄清楚如何从入口点类添加和删除窗口小部件..

2 个答案:

答案 0 :(得分:1)

Header类中创建getter;

Entrypoint课程中添加如下处理程序:

header.getbtnContribute().addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            //TODO
        }
    });

答案 1 :(得分:0)

在自定义窗口小部件中创建一个接受ClickHandler的方法(例如addContributeClickHandler(ClickHandler handler)。在此方法中,将给定的ClickHandler添加到btnContribute

在您的EntryPoint中创建contentScrollPanel后,请致电

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

contentScrollPanel必须是final或其成员才能发挥作用。