【问题标题】:GWT loading panels from Custom Widget来自自定义小部件的 GWT 加载面板
【发布时间】:2013-02-15 07:01:57
【问题描述】:

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

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

【问题讨论】:

    标签: java gwt event-handling


    【解决方案1】:

    Header类中创建getter;

    在您的 Entrypoint 类中添加如下处理程序:

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

    【讨论】:

      【解决方案2】:

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

      在您的入口点创建contentScrollPanel 后,调用

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多