首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GXT ComboBox中添加泛型"All“值

如何在GXT ComboBox中添加泛型"All“值
EN

Stack Overflow用户
提问于 2013-05-14 09:03:22
回答 2查看 1.8K关注 0票数 0

我有一个通用的GXT3 ComboBox,它显示枚举的所有可用值:

代码语言:javascript
复制
public static <T extends Enum<T>> ComboBox<T> buildEnumCombo(Class<T> t){

  ListStore<T> listStore=new ListStore<T>(new EnumModelKeyProvider<T>());

  for(T e:t.getEnumConstants()){
    listStore.add(e);
  }

  ComboBox<T> combo= new ComboBox<T>(listStore, new EnumLabelProvider<T>());
  combo.setTriggerAction(ComboBoxCell.TriggerAction.ALL);

  return combo;
}

这组合效果很好。

我需要什么:,我想要一个能够添加"All“值的值。

我试图在存储区中添加"null“,并自定义LabelProvider以显示"All”,但它并不像预期的那样工作:组合框包含预期的行,但它显示的是一个空文本,而不是"All“,而且该行没有正确的大小。

下面是我的枚举通用ModelKeyProvider

代码语言:javascript
复制
public class EnumModelKeyProvider<T extends Enum> implements ModelKeyProvider<T> {

@Override
public String getKey(T item) {
  if(item==null){
    return null;
  }else{
    return item.name();
  }
}

还有我的通用LabelProvider:

代码语言:javascript
复制
public class EnumLabelProvider<T extends Enum<T>> implements LabelProvider<T> {

  @Override
  public String getLabel(T item) {
    if(item==null){
      return "All";
    }else{
      return I18nEnum.i18nEnum(item);
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2013-05-21 14:49:30

也许不是您正在寻找的解决方案,但我解决了这个问题,只是简单地将ComboBox的ComboBox设置为"All“。

票数 0
EN

Stack Overflow用户

发布于 2013-08-22 13:07:50

尝试SimpleComboBox (在GXT2.2.5上测试)

代码语言:javascript
复制
private SimpleComboBox<String> createSimpleComboBox(){      
        SimpleComboBox<String> combo = new SimpleComboBox<String>();

        combo.setTypeAhead(true);
        combo.setTriggerAction(TriggerAction.ALL);
        combo.setEditable(editable);
        combo.setForceSelection(true);
        combo.setTemplate(getComboTemplate());
        return combo;
}

private native String getComboTemplate() /*-{
return  [
'<tpl for=".">',
'<tpl if="value == \'\'">',
'<div class="x-combo-list-item" qtip="N/A" qtitle=""></BR></div>',
'</tpl>',
'<tpl if="value != \'\'">',
'<div class="x-combo-list-item" qtip="{value}" qtitle="">{value}</div>',
  '</tpl>',
'</tpl>'
].join("");
}-*/;

public SimpleComboBox<String> buildComboBox(){
            SimpleComboBox<String> combo = createSimpleComboBox();

            combo.add("");
            List<String> list = new ArrayList<String>();
            for(T e:t.getEnumConstants()){
                list.add(e.name());
            }
            combo.add(list);
            return combo;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16539041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档