GWT MenuItem - 列出所选值

时间:2013-03-22 12:15:42

标签: java gwt menuitem

我有点问题。就像在代码中我试图创建一个动态的MenuItem列表。哪个没问题,但我想要选择/点击的项目。但我不确定如何正确实现它。所有这一切都发生在我的视图中,我想将值设置为在Presenter中继续。 thx任何帮助。

chooseProfileMenuBar = new MenuBar(true);
for (int i = 0; i<names().size(); i++) {

  final MenuItem menuItemChoose = new MenuItem(names.get(i), new Command(){

    @Override           
        public void execute() {

      // TODO set the onClicked value/name at index i               

    }
  });
  chooseProfileMenuBar.addItem(menuItemChoose);
}
return chooseProfileMenuBar;

3 个答案:

答案 0 :(得分:2)

如果可能,你可以再做一件事, 我有创建运行时的下载菜单,所以我添加了HashMap,并在HashMap中添加了names.get(i)和下载链接,所以它看起来像

map.put(names.get(i),"link"),

现在在execute()中,我添加了Window.open(map.get(menuItem.gettext()),"_blank");

我的项目中的另一个菜单是报告菜单,因此从数据库报告列表即将到来

for(final Temp report : listReports){
    MenuItem menuItem = new MenuItem(report.getType().toString(), new Command() {
        @Override
                public void execute() {
                    getUiHandlers().showReportPanel(report);
                }
            });
        reportMenuBar.addItem(menuItem);
 }

答案 1 :(得分:1)

使用UIHandler概念的好处在视图和演示者之间进行通信。

创建界面:

import com.gwtplatform.mvp.client.UiHandlers;

public interface MyUiHandler extends UiHandlers {
    void onMenuSelected(MenuItem menuitem);

}

然后在您的视图中

public class MyMVPView extends ViewWithUiHandlers<MyUiHandler> implements
        MyMvPPresenter.MyView {
.
.
.
.

实现与Presenter的uihandler接口

public class MyMvPPresenter
        extends
        Presenter<MyMVPPresenter.MyView, MyMVPPresenter.MyProxy>
        implements MyUiHandler {


//in the same presenter 
public interface MyView extends View, HasUiHandlers<UserDashboardUiHandler> {
    //  

.
.
.

然后您将在演示者中获得覆盖方法,如

@Override
    public voidonMenuSelected(MenuItem menuitem) {
         //Your implementation here
    } 

<强>用法

@Override           
        public void execute() {

        getUiHandlers().showReportPanel(menuItemChoose );              

    }

答案 2 :(得分:0)

你是对的vicR,从menuItemChoose获取值是正确的。 你可以这样做

public void execute() {
    onclickMenu(menuItemChoose);
}

void onclickMenu(MenuItem menuItemChoose){
    if(menuItemChoose.gettext().equals("abc"){
         //call handler method that implemented you in presenter
    }
}