我有一个通用的GXT3 ComboBox,它显示枚举的所有可用值:
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
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:
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);
}
}
}发布于 2013-05-21 14:49:30
也许不是您正在寻找的解决方案,但我解决了这个问题,只是简单地将ComboBox的ComboBox设置为"All“。
发布于 2013-08-22 13:07:50
尝试SimpleComboBox (在GXT2.2.5上测试)
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;
}https://stackoverflow.com/questions/16539041
复制相似问题