【问题标题】:GWT MenuItem-List selected valueGWT MenuItem-List 选定值
【发布时间】:2013-03-22 12:15:41
【问题描述】:

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

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;

【问题讨论】:

  • 如果有帮助的话。我正在从演示者设置列表,并从演示者调用此方法(creatingMenuItemList)。因为我的事情/想法是正确的概念方法。或者从 menuItemChoose 获取值是否正确?

标签: java gwt menuitem


【解决方案1】:

如果可能的话,你可以多做一件事, 我有创建运行时的下载菜单,所以我添加了 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);
 }

【讨论】:

    【解决方案2】:

    利用UIHandler Concept 的优势在视图和演示者之间进行通信。

    创建界面:

    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> {
        //  
    
    .
    .
    .
    

    然后你会在presenter中得到override方法,比如

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

    用法

    @Override           
            public void execute() {
    
            getUiHandlers().showReportPanel(menuItemChoose );              
    
        }
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • ok 是有道理的,但是 menuItemChoose 只是在这个范围内初始化,所以这是不可能的,或者?!
      • 有可能..我已经尝试过..我还有一个可能有帮助的建议,所以请检查一下。
      猜你喜欢
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2018-09-01
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多