按代码在ComboBox中设置所选项目

时间:2011-09-28 09:17:43

标签: java combobox zk

如果值列表只有一个项目,我想按代码选择comboBox的第一项。我试过这个:

Comboitem item = new Comboitem();
for(Empresa e : empresasList){              
    item.setValue(e.getEmpId());
    item.setLabel(e.getEmpNombre());
    item.setParent(cb_empresa);
}
if(empresasList.size()==1){             
    idEmpresa = empresasList.get(0).getEmpId();
//cb_empresa.setSelectedIndex(0);
    cb_empresa.setSelectedItem(item);
}

但它不起作用。我也尝试过注释行:

//cb_empresa.setSelectedIndex(0);

任何帮助?

谢谢!

3 个答案:

答案 0 :(得分:0)

我不知道item.setParent(cb_empresa);是否会对视图产生直接影响。 您可以稍后尝试设置索引,也可以在刷新cb_empresa之后尝试设置索引。

答案 1 :(得分:0)

首先,您的代码是错误的。你必须创建与empresasList.size()一样多的Comboitems。我想像是

for(Empresa e : empresasList){
    Comboitem item = new Comboitem();              
    item.setValue(e.getEmpId());
    item.setLabel(e.getEmpNombre());
    cb_empresa.appendItem(item);
}
if(cb_empresa.getItemCount()==1){             
    cb_empresa.setSelectedIndex(0);
}

应该有效。但是,ZK中存在一个错误,即setSelectedIndex()必须被推迟,如Aloong所述。据我记忆,这个错误已得到修复。如果没有,您可以使用Event.echoEvent()作为解决方法。

答案 2 :(得分:0)

for(Empresa e : empresasList){
    Comboitem item = new Comboitem();              
    item.setValue(e.getEmpId());
    item.setLabel(e.getEmpNombre());
    cb_empresa.appendChild(item);
}
if(cb_empresa.getItemCount()==1){             
    cb_empresa.setSelectedIndex(0);
}