按钮上的gwt动作

时间:2015-04-09 17:14:00

标签: java gwt

我创建了一个GWT项目,我遇到了下一个问题。 当我点击不同的按钮时,没有任何附加信息。 但是我在每种情况下都创建了一个方法。 我希望当我点击一个按钮时,Widget 内容会被新消息修改。

我收到了消息"选择项目"我希望例如当我点击按钮顶部时:" ImDb API上的前50部电影列表"。

这是我的代码:

    public class GwtCA2MoviesKOZA implements EntryPoint {

// Attributs
private DockPanel dock;

private Widget header, menu, content;

private Label topHeader;
private Label bottomHeader;
private Label comingSoonHeader;

public void onModuleLoad() 
{

    // Get rid of scrollbars, and clear out the window's built-in margin,
    // because we want to take advantage of the entire client area.
    Window.enableScrolling(true);
    Window.setMargin("100px");

    /* Create all elem*/

    // Dock Panel
    dock = new DockPanel();
    dock.setBorderWidth(3);
    dock.setSize("100%", "100%");
    dock.setVerticalAlignment(HasAlignment.ALIGN_MIDDLE);
    dock.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
    dock.setStyleName("myStyle");

    //Header
    header = createHeaderWidget();
    dock.add(header, DockPanel.NORTH);
    dock.setCellHeight(header, "30px");

    // Menu
    menu = createMenuWidget();
    dock.add(menu, DockPanel.WEST);
    dock.setCellWidth(menu, "200px");

    //Content
    content = createContentWidget(null);
    dock.add(content, DockPanel.EAST);
    dock.setCellHeight(content, "530px");

    //add vp and vp1 at the RootPanel
    RootPanel.get().add(dock);

    topHeader = new Label("List of the top 50 Movies on the ImDb API");
    bottomHeader = new Label("List of the bottom 50 Movies on the ImDb API");
    comingSoonHeader = new Label("List of Movies coming soon on your cinema");

 }  


protected Widget createHeaderWidget() {

    HorizontalPanel pHeader = new HorizontalPanel();

    Image movieData = new Image();
    movieData.setUrl("http://i.myegy.to/images/1c58b25ce86e.original.png");
    movieData.setSize("25%", "25%");
    //Function if the user clicks on the image, he returns on the page of the begin

    Label titleHead = new Label ("Movies");

    pHeader.add(movieData);
    pHeader.add(titleHead);

    return pHeader;
}

protected Widget createContentWidget(String fct) {

    HorizontalPanel pContent = new HorizontalPanel();

    if (fct.equals("top") == true)
    {
        pContent.add(topHeader);
    }
    else if (fct.equals("bottom") == true)
    {
        pContent.add(bottomHeader);
    }
    else if (fct.equals("coming") == true)
    {
        pContent.add(comingSoonHeader);
    }
    else
    {
        Label titleContent = new Label ("Choose a item");   
        pContent.add(titleContent);
    }

    return pContent;
}


protected Widget createMenuWidget() {

    VerticalPanel pMenu = new VerticalPanel();

    Button top = new Button("Top 25");
    top.addClickHandler( new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            createContentWidget("top");
        }
    });

    Button bottom = new Button("Bottom 25");
    bottom.addClickHandler( new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            createContentWidget("bottom");
        }
    });

    Button coming = new Button("Coming Soon");
    coming.addClickHandler( new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            createContentWidget("coming");
        }
    });

    pMenu.add(top);
    pMenu.add(bottom);
    pMenu.add(coming);

    return pMenu;   
}   
}

非常感谢你的帮助。

Mickey74

2 个答案:

答案 0 :(得分:1)

当您点击其中任何一个按钮时,调用createContentWidget(String ftc);,这会返回一个小部件实例,您需要替换当前的content小部件。

试试这个:

top.addClickHandler( new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
        Widget newContent = createContentWidget("top");
        replaceContent(newContent);
    }
});

public void  replaceContent(IsWidget newContent){
     dock.remove(content);//Remove the old
     this.content = newContent.asWidget();
     dock.add(content, DockPanel.EAST);//Add the new one
}

答案 1 :(得分:0)

看起来你在createContentWidget(String fct)中创建的Widget没有被添加到任何要显示在屏幕上的Panel中。

相关问题