我有一个通用的 GXT3 组合框,它显示枚举的所有可用值:
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;
}
这个组合很好用。
我需要什么: 我希望能够添加“全部”值。
我尝试在商店中添加“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);
}
}
}