GWT MenuItem-List 选定值

Posted

技术标签:

【中文标题】GWT MenuItem-List 选定值【英文标题】:GWT MenuItem-List selected value 【发布时间】: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 获取值是否正确? 【参考方案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 只是在这个范围内初始化,所以这是不可能的,或者?! 有可能..我已经尝试过..我还有一个可能有帮助的建议,所以请检查一下。

以上是关于GWT MenuItem-List 选定值的主要内容,如果未能解决你的问题,请参考以下文章

GWT - 如何获取值并决定加载哪个页面

菜单栏中的选定项

如何使用max-height和overflow-y自动滚动GWT SuggestBox:滚动?

GWT Autobean 设置创建接口的初始值

如何从GWT中未选中的复选框中获取值?

GWT 编辑器和 GXT 网格不发送新创建的代理实体,只有 NULL 值